JavaScriptコードの実行におけるルールと環境に関して

このQ&Aのポイント
  • JavaScriptのコードを実行する際には、'<!--'と'//-->'というコメントタグを改行せずに使用するルールが存在します。
  • '<!--'と'//-->'を改行せずに使用すると、プログラムが正常に動作しない場合があります。
  • 要件によっては、上記のコメントタグが必要ない場合もありますので、必要ない場合は削除することが推奨されます。
回答を見る
  • ベストアンサー

javascriptコードについて

下記(1)(2)コードを実行すると、(1)は正常に表示されましたが、(2)の書き方では表示されませんでした。 ----------------------------------------------------------------------------- (1) <script type="text/javascript"> <!-- document.write("Hello"); //--> </script> ----------------------------------------------------------------------------- (2) <script type="text/javascript"> <!--document.write("Hello");//--> </script> ----------------------------------------------------------------------------- そこで質問ですが、'<!--'と'//-->'は改行しないと、 プログラムが正常に動作しないなどのルールはありますでしょうか。 ネット検索もしておりますが、それらしい情報を確認できません。 もし本件について、ご存知の方がいらっしゃいましたらご教授お願いします。 当方、プログラム初心者です。 できるだけ情報を集めたいので、本件について参考になるURLなどがあれば、 併せて回答お願いします。 また、本コードを実行した環境は以下の通りです。 OS:Windows7 pro ブラウザ:IE9、11、chrome、FireFox ※javascript使用に必要な設定は全て有効。

noname#255642
noname#255642

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

  • ベストアンサー
  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.3

JavaScriptでは、 <!-- から 行末までは1行コメントとして無視されます。 > 本件について参考になるURLなどがあれば、 > 併せて回答お願いします。 以下のページからダウンロードできる ECMA-262.pdfの523ページ「B.1.3 HTML-like Comments」に記載があります。 Standard ECMA-262 http://www.ecma-international.org/publications/standards/Ecma-262.htm なお、Script要素の中にJavaScriptコードを書くのは気をつけなければいけないことが増えてしまうので(コード中に</script>という文字列が出現したときとか)、基本的には外部ファイルにしておくのがお勧めです。

noname#255642
質問者

お礼

お返事が遅くなりましてスミマセン。 URL、ならびにアドバイスをいただき、ありがとうございました。

その他の回答 (2)

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.2

> そこで質問ですが、'<!--'と'//-->'は改行しないと、 > プログラムが正常に動作しないなどのルールはありますでしょうか。 現代であれば書かないのが正しいです。 それは1990年代の初めころにそう書かないとコードが表示されてしまうクソブラウザがあったから書かれ始めた習慣で、1995年頃にはほぼ撲滅されていました。 それから20年以上経った現在では全く必要ありません。 いまだにそう書いている書籍やサイトは情報が古すぎるかど素人の書いた情報です。2度と見ない方がいいですよ。

noname#255642
質問者

お礼

お返事が遅くなりましてスミマセン。 > そこで質問ですが、'<!--'と'//-->'は改行しないと、 いまだにそう書いている書籍やサイトは情報が古すぎるかど素人の書いた情報です。 なるほど。そういう記述で書いているサイトは古い、または、 そこまで熟練していないPGの方なんですね。 参考になりました。アドバイスありがとうございました。

  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.1

<!-- は、JavaScriptコードとしては構文エラーですが、scriptタグの中では例外的に行末まで読み飛ばされるようです。歴史的経緯と言うことでしょう。 現在では、単に、 <script type="text/javascript"> document.write("Hello"); </script> と書きます。

noname#255642
質問者

お礼

お返事が遅くなりましてスミマセン。 参考になりました。アドバイスありがとうございました。

関連するQ&A

  • JavaScriptのコードの間違いを教えて

    いつもお世話になっております。 現在、JavaScriptの勉強をしているのですが、if構文のところでつまずいてしまいした。 下のコードがうまく実行できません。 間違いを指摘して頂ければと思います。 <doctype! html> <html lang="ja"> <head>    <meta charset="UTF-8">    <title>Javascript</title> </head> <body> <script type="text/javascript">    var x = window.prompt("好きな値を入力してください","100");    if (x>100)       {window.document.write("100より大きいです");}    else {if(x<100))       {window.document.write("100より小さいです");}       else {if(x=100))          {window.document.write("100です");}       }    } </script> </body> </html> なお、テキストエディタで記述し、実行はGoogleChromeで行いました。 よろしくお願いします。

  • javascriptに関する質問です

    9×9のます目一つ一つに・を表示させるプログラムをつくっているのですがなかなかうまくいきませんどなたかご教授ください <script language="JavaScript" type="text/javascript"> <!-- document.write("<center>"); document.write("<h1>・の表</h1>"); document.write("<table border>"); var i; var j; for (i =・;i=<9 ){ document.write("<tr>"); for(j =・;j=<9 ){ document.write("<td>"); document.write(i * j) document.write("</td>") } document.write("</tr>"); } document.write("</table>"); //--> </script>

  • 外部javascriptファイルをjavascriptから動的に呼び出したい

    呼び出し元のURLによって動作を変えたいJAVASCRIPTがあります。 普段外部のJAVASCRIPTを呼び出すときはよくこうするのですが <script type="text/javascript" src="js.php?key=url"></script> これでは「key=url」が固定になってしまいます。そこで下記のように <script> var commentname=document.URL; var str=encodeURIComponent(commentname); document.write('<script type="text/javascript" src="read.php?key=',str,'"><\/script>'); </script> document.writeを使って無理やり外部Javascriptファイルの呼び出しスクリプトを書いているのですが、この書き方はどうもエレガントさにかけるというか、いまいち気に入りません。 もっとほかに良い方法がある気がするのですが、調べてもわかりませんでした。おわかりになる方がいらっしゃったらご教示頂けないでしょうか。

  • selectタグで日付を生成

    プルダウンメニューで、本日から4日後 から 1か月先までの日付をYYYY/MM/DDの形式で生成して表示されたいのですが、それをvalueに入れる方法が分かりません。 下記までは書いてみたんですが、 <option value="???">のところに何と書いていいのか分からなくなってしまいました。。 for文などループ処理で書いた方がキレイだとは思いますが、 イマイチ分からなかったので、併せて御教授いただければと思います。 <script type="text/javascript"> document.write(AddDate(+4)+'~'+ AddDate(+30)); function AddDate( n ){ var day = new Date( (new Date).getTime()+n*24*60*60*1000); return (day.getFullYear() + "/" + (day.getMonth() + 1) + "/" + day.getDate()); } </script> <select name="delidate"> <option value=""><script type="text/javascript">document.write(AddDate(+4));</script></option> <option><script type="text/javascript">document.write(AddDate(+5));</script></option> <option><script type="text/javascript">document.write(AddDate(+6));</script></option> <option><script type="text/javascript">document.write(AddDate(+7));</script></option> <option><script type="text/javascript">document.write(AddDate(+8));</script></option> <option><script type="text/javascript">document.write(AddDate(+9));</script></option> <option><script type="text/javascript">document.write(AddDate(+10));</script></option> <option><script type="text/javascript">document.write(AddDate(+11));</script></option> <option><script type="text/javascript">document.write(AddDate(+12));</script></option> <option><script type="text/javascript">document.write(AddDate(+13));</script></option> <option><script type="text/javascript">document.write(AddDate(+14));</script></option> <option><script type="text/javascript">document.write(AddDate(+15));</script></option> <option><script type="text/javascript">document.write(AddDate(+16));</script></option> <option><script type="text/javascript">document.write(AddDate(+17));</script></option> <option><script type="text/javascript">document.write(AddDate(+18));</script></option> <option><script type="text/javascript">document.write(AddDate(+19));</script></option> <option><script type="text/javascript">document.write(AddDate(+20));</script></option> <option><script type="text/javascript">document.write(AddDate(+21));</script></option> <option><script type="text/javascript">document.write(AddDate(+22));</script></option> <option><script type="text/javascript">document.write(AddDate(+23));</script></option> <option><script type="text/javascript">document.write(AddDate(+24));</script></option> <option><script type="text/javascript">document.write(AddDate(+25));</script></option> <option><script type="text/javascript">document.write(AddDate(+26));</script></option> <option><script type="text/javascript">document.write(AddDate(+27));</script></option> <option><script type="text/javascript">document.write(AddDate(+28));</script></option> <option><script type="text/javascript">document.write(AddDate(+29));</script></option> <option><script type="text/javascript">document.write(AddDate(+30));</script></option> </select> 分かり難く申し訳ないですが、宜しくお願い致します。

  • javascriptの比較演算

    不可解な動作に困っています。 どなたかご教示ください。 <html> <body> <script type="text/javascript"> var a=8; if(10>a>0){document.writeln(a);} else {document.writeln("else");} </script> </body></html> だと、ブラウザで実行すると画面に8と表示されます。 一方 <html> <body> <script type="text/javascript"> var a=8; if(10>a>7){document.writeln(a);}else{document.writeln("else");} </script> </body></html> とすると、実行したときにelseと表示されます。 とても不可解です どうしてでしょうか。

  • javascriptエラーについて教えてください。

    メアドを直接ソースに書かないようにするためのjavascriptで 外部ファイルを読み込むように実行してみたのですが、 「実行しましたが、ページでエラーが発生しました。」となり、 ライン:9 文字:1 エラー:‘CSAct’は宣言されていません。 コード:0 という内容のメッセージが出ます。 【HTML】 1:<HTML> 2:<HEAD> 3:<TITLE>情報</TITLE> 4:<meta http-equiv="content-type" content="text/html;charset=shift_jis"> 5:<LINK rel="stylesheet" href="××css" type="text/css"> 6:<script type="text/javascript" src="mail.js"></script> 7: <script type="text/javascript"> 8: <!-- 9: CSAct[/*CMP*/ '1320E1966'] = new Array(CSGoBack1); 10: // --> 11: </script> 12: </HEAD> 13: <body>~ 【メアドの箇所】 E-mail:<script type="text/javascript"><!--// add_AAA(); //--> </script> 【外部ファイル_mail.js】 function add_AAA(){ mail="AAA." + "BBB" + "@CCC.ne.jp"; document.write(mail.link("mailto:" + "AAA." + "BBB" + "@CCC.ne.jp")); } はっきり言ってjavascriptについて全然わかっていない超初心者です。。。 このソースもよさそうなところから引っ張ってきただけなので、 何をどう直していいのか、過去ログを見てもお手上げです。 どなたかエラーの原因がお分かりになりましたらご教授いただけないでしょうか? よろしくお願いします。

  • javascript + php でエラー

    エラーを取り除くことができず、困っています。 助けてください。 下記のようなコードで、PHPからjavascriptに文字列を渡しているのですが、 文字列に改行コードがあるとエラーになってしまいます。 (改行コードがない場合はエラーはでません) 文字コードはEUC-JP、改行はLFとしています。 エラーの原因と、対策を教えてください。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> <!-- function sampl(str) { alert(str); } //--> </script> </head> <body> <form method="post" action="#"> <?php $str = "テスト\n改行あり"; ?> <input type="button" value="実行" onClick="sampl('<?=$str?>')"> </form> </body> </html>

  • JavaScriptの間違いがどこか教えてください。

    JavaScriptを勉強しはじめたばかりで、つまずいております。 時間ごとに違った言葉を表示するというJavaScriptです。 どこが間違えているのかわからないので、教えてください。 間違いはこの中にあるはずなのですが…。 <script type="text/javascript"> <!-- now = new Date(); nowhours = now.getHours(); document.write(nowhours); if (nowhours <= 3) { msg = "こんばんは"; } eles if (nowhours <= 11) { msg = "おはようございます"; } eles if (nowhours <= 16){ msg = "こんにちは"; } eles { msg = "こんばんは"; } document.write(msg); //--> </script> 正しい答えは <script type="text/javascript"> <!-- now = new Date(); nowhours = now.getHours(); document.write(nowhours); if (nowhours <= 3 ) { msg = "こんばんは"; } else if (nowhours <= 11) { msg = "おはようございます"; } else if (nowhours <= 16){ msg = "こんにちは"; } else { msg = "こんばんは"; } document.write(msg); // --> </script> なのですが、どこが違うのかまったくわかりません。

    • ベストアンサー
    • Mac
  • javaScriptタグを打っても何もでない

    <script type="text/javascript"> document.write("<h1>hello</h1>"); </scroipt> こう打ったら画面にhelloって出るはずなのに何も出ないで真っ白のままになってしまいます。 教科書では未対応ブラウザだからか?って思ってコメント文に<!-- // -->で挟めば大丈夫って書いてあったのでやってみても全然真っ白状態です。 1週間前くらいは普通にできたのですが、、、 どうすればいいのか教えてください。  備考;拡張子は問題なし

  • adsenseをjavascriptで出力したい

    お世話になります。 以下の構文が記載されたPHPをhtmlからjavascriptにて呼び出してます。 が、うまく広告が表示されずに困っています。 PHPを直接叩き、document.write等を削除したものを 直接htmlに貼り付ければ、広告は表示されます。 広告が表示されない原因としては、adsenseのscript内でinframeを作成しているのですが その歳のwidth,heightが0になってしまっているようです。 しかし、なぜその値が渡せていない?のかが解らずハマっています。 <?php header("Content-type: application/x-javascript"); echo "document.write(\"<div align='center'>\")\n"; echo "document.write(\"<p>\")\n"; echo "document.write(\"<script type='text/javascript'><!--\")\n"; echo "document.write(\"google_ad_client = 'hogehogeID';\")\n"; echo "document.write(\"/* 200*200 */\")\n"; echo "document.write(\"google_ad_slot = 'slotnumber';\")\n"; echo "document.write(\"google_ad_width = 200;\")\n"; echo "document.write(\"google_ad_height = 200;\")\n"; echo "document.write(\"//-->\")\n"; echo "document.write(\"</script>\")\n"; echo "document.write(\"<script type='text/javascript'\")\n"; echo "document.write(\"src='http://pagead2.googlesyndication.com/pagead/show …\")\n"; echo "document.write(\"</script>\")\n"; echo "document.write(\"</p>\")\n"; echo "document.write(\"</div>\")\n"; ?> adsenseコード中にコメントが使用されているのですが このあたりが怪しいと思いますが・・・ 博識な方、よろしくお願い致します。

専門家に質問してみよう