• ベストアンサー

6で割り切れる数を表示するJavaScriptでエラーが出ます。

こんにちは、片岡と言います。 私は、JavaScriptを今回初めて書きます。また、HTMLもよくわかりません。 ファイル(1)"continue.xhtml" を Firefox2 で実行すると、エラー(2) が出ます。 どうすれば、エラーが出なくなるのでしょうか。 原因または解決策をご存知の方はいらっしゃいませんか。 ●ファイル(1)"continue.xhtml" <?xml version="1.0" encoding="Shift_JIS" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title>continue</title> </head> <body> <script language="JavaScript" type="text/javascript"> <![CDATA[ var max = 100; for (var i = 1; i < max; i++) { if ((i % 6) != 0) { continue; } document.write(i, "<br>"); //ここでエラーがでます。 } ]]> </script> </body> </html> ●エラー(2) > エラー: uncaught exception: [Exception... "Object cannot be created in this context" > code: "9" nsresult: "0x80530009 (NS_ERROR_DOM_NOT_SUPPORTED_ERR)" > location: "file:///C:/continue.xhtml Line: 21"] また、Internet Explorer 6 で ファイル(1)"continue.xhtml" を実行すると、 webブラウザが終了します。 なお、"continue.xhtml"ファイルは、 JavaScriptプログラミング入門 第2版 ( http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06660-6 ) の79ページの"continue.html"を参考にしました。 ●私の環境は以下の通りです。 OS: Microsoft Windows XP Professional SP2 webブラウザ: Firefox/2.0.0.3 , Internet Explorer 6.0

noname#91531
noname#91531

質問者が選んだベストアンサー

  • ベストアンサー
noname#30818
noname#30818
回答No.2

拡張子がxhtmlだからでは? 例えば <?xml version="1.0" encoding="Shift_JIS" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "​http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">​ <html xmlns="​http://www.w3.org/1999/xhtml"​ xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title>continue</title> </head> <body> <div> <script language="JavaScript" type="text/javascript"> <![CDATA[ var max = 100; for (var i = 1; i < max; i++) { if ((i % 6) != 0) { continue; } document.write(i, "<br>"); //ここでエラーがでます。 } ]]> </script> </div> </body> </html> とすると動くとか・・・ HTMLなら動くとか。 いろいろ考えられます。 サーバーが送るMIMEタイプが何か解りませんが、サーバーが送るMIMEタイプがapplication/xhtml+xmlならIE6は受け付けませんよ。 NS_ERROR_DOM_NOT_SUPPORTED_ERR ’DOM_NOT_SUPPORTED’が気になったので検索して見ました。 http://translate.google.com/translate?hl=ja&sl=en&u=http://www.thescripts.com/forum/thread515846.html&sa=X&oi=translate&resnum=1&ct=result&prev=/search%3Fq%3DNS_ERROR_DOM_NOT_SUPPORTED_ERR%26hl%3Dja%26rls%3DGGLG,GGLG:2006-05,GGLG:ja

noname#91531
質問者

お礼

k506d467 さん、回答ありがとうございます。 > サーバーが送るMIMEタイプが何か解りませんが、 > サーバーが送るMIMEタイプがapplication/xhtml+xmlならIE6は受け付けませんよ。 ご指摘通り、MIMEタイプは、application/xhtml+xmlでした。 私は、「Firefox2のエラー」と「IE6が終了する」の原因が同じだと思っていました。 拡張子をhtmlにすれば、IE6で終了しなくなりました。 また、Firefox2でも拡張子がhtmlであればエラーは出ませんでした。 それから、紹介していただいたwebページは、私の力では有効利用できませんでした。ごめんなさい。 k506d467 さん、ありがとうございます。

その他の回答 (4)

回答No.5

同じエラーは出ませんでしたが、 if(!!document.write){ document.write('hello'); }else{ alert('no write'); } とすると、'no write'のアラートが出ました。 環境は拡張子.xhtml、MIME Type application/xml、Win Fx2.0です。 MIME Typeをtext/hmtlにすると期待通り実行されるようですが、 > <![CDATA[ > ]]> この記述がスクリプトエラーになりますので、 XHTMLの文法上はエラーになりますが、ブラウザの実装上 <![CDATA[ と ]]> はない方がいいと思います。 IEではブラウザに設定されていない拡張子は表示出来ないようです。 (MIME Typeがtext/htmlになっていてもMIME Typeを無視して、ブラウザの設定を優先させるようです。xhtmlが登録されていなければ、表示出来ないかソースをそのまま表示します。) ので、拡張子は.htmlの方がいいのかも。。。 根本的な解決策ではありませんが、ご参考まで。 XHTMLなんて嫌いだヽ(`Д´)ノ

noname#91531
質問者

お礼

taloo さん回答ありがとうございます。 >if(!!document.write){ の記述は勉強になりました。 ところで、いろいろ調べたのですが、xhtmlでdocument.write()は使えないようです。 そのため、document.write()と同じ処理をしたければ、DOMを使用しなければいけないようです。 http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite >Does document.write work in XHTML? > >No. Because of the way XML is defined, it is not possible to do tricks like this, where markup is generated by scripting while the parser is still parsing the markup. >You can still achieve the same effects, but you have to do it by using the DOM to add and delete elements. ただ、私は英語がわからないので間違っているかもしれません。 <?xml version="1.0" encoding="Shift_JIS" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title>continue</title> </head> <body> <script language="JavaScript" type="text/javascript"> <![CDATA[ var max = 100; var i; for (i = 1; i < max; i++) { if ((i % 6) != 0) { continue; } // document.write(i, "<br>"); と同様のコード var txt = document.createTextNode(i); document.body.appendChild(txt); var br = document.createElement("br"); document.body.appendChild(br); // } ]]> </script> </body> </html> taloo さんありがとうございます。

  • KanjiTalk
  • ベストアンサー率30% (7/23)
回答No.4

質問には関係ありませんが、 わざわざmaxを宣言せずに、 for (i=0; i<100; i++) {}; みたいにリテラルを使った方が早いかな。

noname#91531
質問者

お礼

KanjiTalk さん、回答ありがとうございます。 ご指摘どおり、提示されたコードの方がシンプルだと思います。 参考になりました。 KanjiTalk さん、ありがとうございます。

noname#79209
noname#79209
回答No.3

直接の回答ではありませんが、 6で割り切れない場合は何もしないようですので、 iに1づつ足すのではなく、 var addNum = 6; var i = addnNum; var maxNum = 100; while(i <= maxNum ) { document.write(i, "<br>"); i = i + addNum; } の方が宜しいかと... エラーも起きない可能性が大きいです。

noname#91531
質問者

お礼

vizzar さん、回答ありがとうございます。 提示されたコードを参考にしてみます。 vizzar さん、ありがとうございます。

noname#39970
noname#39970
回答No.1

iがスコープ外(forの中で宣言されている) よって var i; for(i = 1;i < max; i++) が目的の動作をすると思うけど?

noname#91531
質問者

お礼

SAYKA さん、回答ありがとうございます。 次のhtmlファイルを私の環境で実行してみました。 しかし、IE6とFirefox2で問題はありませんでした。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>scopetest</title> <!-- Create: 2007-04-08T22:03:51+9:00 --> <!-- Last update: 2007-04-08T22:14:01+9:00 --> </head> <body> <script language="JavaScript" type="text/javascript"> <!-- for (var i = 0; i < 2; i++) { window.alert(i); } var j; for (j = 3; j < 5; j++) { window.alert(j); } //--> </script> </body> </html> ただ、他の環境ではエラーが出るかもしれません。 JavaScriptのスコープについて、私は、よくわかっていませんでした。 勉強しなおします。 SAYKA さん、ありがとうございます。

関連するQ&A

  • SafariでPHPソースがそのまま表示される

    Safariでindex.phpを開くとソースコードがそのまま表示されてしまいます。 拡張子をphpとしているだけでソース内にはphpスクリプトは記述しておりません。 なぜでしょうか? ※ファイル名をindex.htmlに変えると正しく表示されます。 Windows 7 Home Premium 64bit Safari5.1.5 ソースコードのエンコーディング:utf-8 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="content-style-type" content="text/css" /> <meta http-equiv="content-script-type" content="text/javascript" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <title>テストtitle> </head> <body> <h1>テストページ</h1> </body> </html>

  • cssがIE6で適用されない理由は

    教則本を見てcss/xhtmlでサイトを作ったのですが、 (教則本がIE7以降対応だった為) safari firefoxd IE7では表示がうまくいくのですが、 IE6では全くcssが適用されないです。 少し調べたところこの辺の記述に問題があるのかなと思っています。 誰か教えて下さい。 ............................................................................... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="jap" lang="jap" dir="ltr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Script-Type" content="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> ....................................................................

    • ベストアンサー
    • HTML
  • CSSのアドバイスをお願いいたします。

    <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <meta name="robots" content="noindex,nofollow,noarchive" /> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <style type="text/css"> .r { color : #407133; } .k { color : #336070; } .t { color : #454580; } .s { color : olive; } p { color : #222222; } body { background-color:#e0ffe0; } a:link { color : #0000ff; } a:visited { color : #003333; } a:hover { color : #660000; } a:active { color:#660066; </style> <meta http-equiv="Content-Script-Type" content="text/javascript" />の1行を加えてみました。 この場合の記述の是非。 また記述すべき個所は合っているのでしょうか。

    • ベストアンサー
    • HTML
  • 「ページでエラーが発生しました」というエラー

    movabletype3.3を利用しております 最近ページエラーが発生します エラーの詳細は ライン:2 文字:8 エラー:'​www'​は宣言されていません コード:0 という物です このブログのメインページテンプレートの上部には 以下のような記述があります <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "​http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">​ <html xmlns="​http://www.w3.org/1999/xhtml"​ id="sixapart-standard"> <head> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Type" content="text/html; charset=<$MTPublishCharset$>" /> <meta http-equiv="Content-Style-Type" content="text/css" /> どうすればこのエラーを解除できるのでしょうか? よろしくお願いします

  • JavaScriptを使ってWebページにメッセージを表示させる

    html内に<div id="info"></div>と書き、それをjavascriptのプログラムから「こんにちは」というメッセージを表示させるようにしたいのですが、何度試しても製作途中の段階でdocument.getElementById(id) has no propertiesというエラーが出てしまいます。(←Firebugでエラーが検出されます) どこが間違っているのか教えていただけると助かります。 ================= HTML ================= <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr"> <head> <meta http-equiv="content-script-type" content="text/javascript" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>map</title> <link rel="stylesheet" type="text/css" href="common/css/main.css" /> <script src="common/js/main.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div id="info"></div> </body> </html> ================= JavaScript ================= var map window.onload = function() { load(); } function _d(id, htmlTxt) { document.getElementById(id).innerHTML = htmlTxt; } _d("info","こんにちは");

  • PHP、どうして認識しないのですか?

    現在の私のサイト(shtml)のソースは次のとおりです(甲)。これを下記(乙)のように書き換えてアップしましたが”こんにちは”の文字が現れません。 レンタルサーバーの問題ですか?ソースの問題ですか? (甲) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML lang="ja"> <HEAD> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" > <META http-equiv="Content-Script-Type" content="text/javascript"> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <META NAME="ROBOTS" CONTENT="INDEX,FOLLOW"> <TITLE>○○○</TITLE> (乙) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>○○○</title> </head> <body> <!--shtmlのソースの中に次を挿入しました--> <p> <?php echo "こんにちは。<br />"; echo "こんにちは。<br />"; echo "こんにちは。<br />"; echo "こんにちは。<br />"; ?> </p> ----------------------- これが表示されません。 教えて下さい。どうしてですか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • JavascriptでObjectからJSON形式変換するにはどうすればいいでしょうか?

    toSourceだと少し違うし、どうすればいいのでしょうか。簡単に変換できる関数でもあればいいのですが、わかりませんでした。 どなたかご教授お願いします。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>objctからJSONに変換</title> <script type="text/javascript"> obj = new Object(); obj.test = "txt"; str = obj.toSource(); document.write(str); //--> </script> </head> <body> </body> </html>

  • 下記のタグの中で必要ないのはありますか?

    (1) <?xml version="1.0" encoding="UTF-8"?> (2) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> (3) <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> (4) <head> (5) <title>●●●●●●●●</title> (6) <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> (7) <meta http-equiv="Content-Style-Type" content="text/css" /> (8) <meta name="robots" content="INDEX,FOLLOW"> (9) <meta name="description" content="●●●●●●●●"> (10) <meta name="keywords" content="●●●●●●●●"> (11) <meta name="content="●●●●●●●●" /> (12) <meta http-equiv="Content-Script-Type" content="text/javascript"> (13) <meta http-equiv="Content-Style-Type" content="text/css"> (14) <link href="css/A1.css" rel="stylesheet" type="text/css" /> (15) <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

  • IEでエラー

    FireFoxだと問題ないのですが、IEだとエラーが出ます。 原因がわからないので、助けてください。 IEには次のようなエラーが出ます。 ライン:5 文字:1 エラー:構文エラーです コード:0 ソースコードは以下の通りです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> 。。。。 以上、すみませんが、よろしくお願いします。

    • ベストアンサー
    • HTML
  • crossSlideがうまく機能しないです;

    簡単な画像切り替えのプラグインとして、 crossSlideを見つけたので使用してみようとしたんですが、 全く何も表示されない状態で困っています。 下記のようにソースは記載しています。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="content-language" content="ja" /> <title></title> <meta name="description" content="" /> <meta name="keywords" content="" /> <meta http-equiv="content-style-type" content="text/css" /> <meta http-equiv="content-script-type" content="text/javascript" /> <link href="css/base.css" rel="stylesheet" type="text/css"> <link href="css/index.css" rel="stylesheet" type="text/css"> <script type='text/javascript' src='js/jquery-1.9.1.min.js'></script> <script type='text/javascript' src='js/jquery.cross-slide.js'></script> <script type="text/javascript"> $(function(){ $('#mainvisual').crossSlide({ sleep: 1, fade: 1 },[ { src: 'images/01.jpg' }, { src: 'images/02.jpg' }, { src: 'images/03.jpg' } ]); }); </script> </head> <body> <p>タイトル</p> <div id="mainvisual"> <p>写真</p> </div> </body> </html> cssは何も指定していません。 jsフォルダに、jquery-1.9.1.min.jsファイル、jquery.cross-slide.jsファイルを入れています。 imagesフォルダには、01.jpg、02.jpg、03.jpgを入れてます。 ブラウザには <p>タイトル</p> は表示されるのですが、 div#mainvisualの中の <p>写真</p>の文字は表示されません。 何が原因なのでしょうか。 よければアドバイスの方よろしくお願いします。

専門家に質問してみよう