- 締切済み
外部 .js で
index.html 内の head タグ間に <script type="text/javascript" src="./js/test2.js"></script> また、index.html と同階層にある js ディレクトリの内の test2.js の内容は document.write("test") だけです。 この条件で(というのは、最終的に別にテキストを出したいだけというわけではないので)、body の任意の場所に test を表示 [記述] させる方法を教えてください。 body の適当な場所に <script type="text/javascript"></script> と書いても、何も現れません(ソースで確かめています)。根本的におかしいのかもしれませんが、わかりません。 必ず、これら条件でお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- gaku1
- ベストアンサー率71% (10/14)
No.4です。No.4ではトンチンカンなことを書いてしまったようです。書き直します。 まず,外部.jsで関数を定義します。 function aaa(){ var sss=document.getElement.ById("bbb"); sss.innerHTML="TEST"; } つぎに,htmlからこの関数を次のようにして呼ぶようにします。 <body onload="aaa()"> 最後に,bodyの好きなところに, <span id="bbb"></span> と書きます。ページが表示されると,<span...>の位置にTEXTと表示されるはずです。onloadハンドラで関数を呼ぶのは,idが定義されたあとに関数をよぶためです。 と,こんな感じではどうでしょうか。
- gaku1
- ベストアンサー率71% (10/14)
外部の.jsではdocument.write()を関数に包み(たとえば,function aaa(){document.write("test");}),body内から<script>aaa();</script>とするのではいけないのでしょうか。
- Werner
- ベストアンサー率53% (395/735)
> インラインでできますが、そういうことはしたくないのです。 インラインは、HTML文書内に <script type="text/javascript">document.write("test");</script> のように、直接JavaScriptを記述するという意味ですよね? それなら、私の提示したHTML文書はJavaScriptを外部ファイルにしか記述していないはずですが。 (「直接document.writeを記述しても…」と書いたのは、あくまで動作確認のためです。) それとも、bodyにscript要素さえ記述したくないのでしょうか? 最初の質問文に、 > body の適当な場所に <script type="text/javascript"></script> と書いても とあるので、bodyにscript要素を書くのはかまわないと解釈したのですが。 それに、bodyのtestを表示したい場所にscript要素を記述しないと、 表示する場所を指定できませんよ。 (もし、bodyにscript要素も書きたくないのであれば、 document.writeではなくinnerHTMLなどを使った方が良さそうです。) あと、script要素内に直接document.writeを記述したときや、 私が#2で示したHTMLを使ったときは結局動作したのでしょうか?しなかったのでしょうか? > 「意義=結果をもたらすのですか」という意味です; すなわち、正しい記述なのかということです script は headにもbodyにも記述できます。なので正しい記述です。
- Werner
- ベストアンサー率53% (395/735)
> UA のソースでも確認しています; <script type="text/javascript" src="./js/test2.js"></script> が表示されているだけです HTMLのソースを見ても、JavaScriptの出力結果を確認することはできないですよ。 でも、UAのレンダリング結果にも反映されないとしたら変ですね。 試しに、外部jsファイルを使わずに直接document.writeを記述しても表示されませんか? 私の方でも試して見ましたが、 以下の内容でtestが表示されました。 (IE 6.0/Firefox 1.5.0.6/Opera9.01で確認) ------------------------------------ <html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>test</title> </head> <body> <script type="text/javascript" src="./js/test2.js"></script> </body> </html> ------------------------------------ > そもそも思ったのですが、<script> は body に書いて意味あるものなのですか。 今回の場合はdocument.writeでbodyに出力するのが目的なのでbodyで良いでしょう。 外部jsを使わずにdocument.writeを記述するときはbody内に書きませんでしたか? (私はdocument.writeは使わないこともあって全部headに書いてますが。)
補足
UA で確認できるのは、レンダリングの結果です。 インラインでできますが、そういうことはしたくないのです。最初の質問に念押ししているので、ご覧ください。 「意味あるのですか」というのは、「意義=結果をもたらすのですか」という意味です; すなわち、正しい記述なのかということです; 動くJavaScript は、head にしか書いたことがありません。
- Werner
- ベストアンサー率53% (395/735)
外部jsファイルに書かれているのがfunction定義などなら jsファイルはheadで指定すればよいのですが、 > index.html 内の head タグ間に > <script type="text/javascript" src="./js/test2.js"></script> この場合、head要素内に <script type="text/javascript"> document.write("test"); </script> と書いたのと同じ事になってしまいます。 これは質問者さんの意図とは違うのではないでしょうか? (試してみたら、head要素内の文字も一応表示はされましたが。) > body の適当な場所に <script type="text/javascript"></script> と書いても、何も現れません script要素内に何もかかれておらず、srcも指定されていないので、 それだと空の何もしないJavaScriptを書いたことになります。 そのbodyの方に <script type="text/javascript" src="./js/test2.js"></script> と書いてみてはどうでしょう。
補足
それもやってみたのですが、駄目でした。何も表示されていません(UA のソースでも確認しています; <script type="text/javascript" src="./js/test2.js"></script> が表示されているだけです)。 私のやりたいことは、「外部 .js に document.write("test") とだけ書いて、HTML のインラインには関数も何も一切書かず、HTML の body の任意の場所に test を表示させる」というものです。 そもそも思ったのですが、<script> は body に書いて意味あるものなのですか。
補足
最初に書いてあるような条件で実現したいのです。 できないなら JavaScript の使用そのものをやめて、大幅に設計変更しよ%鑮