- ベストアンサー
外部リンクについて質問です。
通常のリンクは下のような感じで外部から呼び出してきますが、 <script type="text/javascript" src="1.js"></script> 例えば、変数Formにアドレスが代入してある場合どのようにsrcに記述したらいいのでしょうか? document.write(Form); で確認すると、ちゃんと「1.js」と出ます。 FormはJavaScript内での変数です。 色々試して、 <script type="text/javascript" src="Form"></script> <script type="text/javascript" src=Form></script> など、他にもいくつか試しましたがうまくいきません。 代入値をアドレスとして使えないのでしょうか? もう完全に行き詰って全く分かりません。 すみませんが分かる方よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
document.write()で書き込んじゃうと全部書き換えられちゃったり することもあるようなので、それを使わないで対処する方法です。 var form = document.getElementsByName('form')[0]; は、 'form' という名前(name)を持つエレメントを配列で取得し その要素0をformという変数に代入しています。 var src = document.getElementsByName('src')[0].value; は、同様に 'src' というnameのエレメントの要素0の値(value)を 変数srcに取得しています。 if(src != '') { これは、srcが空文字列でなかったらということです。 var s = document.createElement('script'); scriptエレメントオブジェクトを作成して変数sに代入します。 s.type = 'text/javascript'; s.charset = 'shift_jis'; s.src = src; これは、scriptエレメントの各属性ですね。 document.getElementsByTagName('head')[0].appendChild(s); headエレメントオブジェクトの要素0にエレメントオブジェクトsを 子要素として追加しています。 return false; これは、submitが実行されないようにするためにしています。 こんな感じでどうでしょうか。 結構難しいのですけど、あまりdocument.write()を使うのは よくないらしいので。
その他の回答 (4)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
<script> form="1.js"; document.write('<'+'script type="text/javascript" src="'+form+'"><"'+'/script>'); </script> 参考 ANo.1 > '<'+'script この部分の分割は特に必要ないかも。念のため、ということで。 外部ファイルにすれば、わざわざHTMLタグを分割する必要はありません。
お礼
回答ありがとうございます。 こっちは、かなり簡単そうです。! 理解しやすいですね。
- pick52
- ベストアンサー率35% (166/466)
こんな感じで挿入するといいと思います。 // JavaScript function Load() { var form = document.getElementsByName('form')[0]; var src = document.getElementsByName('src')[0].value; if(src != '') { var s = document.createElement('script'); s.type = 'text/javascript'; s.charset = 'shift_jis'; s.src = src; document.getElementsByTagName('head')[0].appendChild(s); } return false; } <!-- HTML --> <form name="form"> <input type="text" name="src" value=""> <input type="input" name="dummy" value="" style="display: none;"> <input type="submit" value="読み込み" onclick="return Load();"> </form>
お礼
回答ありがとうございます。 ANo.2の方に似てますね。 ふむふむ。 重要な所の意味が出来ないので、google先生で調べてみます。
- yambejp
- ベストアンサー率51% (3827/7415)
#1さんのはないですね・・・ scriptのなかに</script>をかくとそこでスクリプトが終わってしまうので・・・ よくつかわれる方法としては以下のようなやりかたがあります var form="1.js"; var j=document.createElement("script"); j.setAttribute("type","text/javascript") j.setAttribute("src",form); document.getElementsByTagName("head")[0].appendChild(j)
お礼
回答ありがとうございます。 う~ん。 やっぱり途中で</script>終わってたのですか・・・。 知らないものばかり出てきてるのでgoogleで意味を調べてから使ってみます。
補足
すみません。 googleで、document.createElementと調べるといっぱい出てきていくつか似たようなものを紹介されてたのですが、説明がされてなかったので意味がよく理解できません。 上のソースがどのような働きがあるのか、お時間が空いている時でいいのでよろしければ教えていただけないでしょうか?
- gekkouya
- ベストアンサー率15% (3/19)
こんな感じですか? <script> form="1.js"; document.write("<script type='text/javascript' src='"+form+"'></script>"); </script> 普通はやらないと思いますけど 後↑テストも何もしてないし文法のチェックもしてないのであしからず
お礼
回答ありがとうございます。 わお! Scriptの中でもう一度呼び出せるなんて知りませんでした。 document.writeの中に・・・。 色々方法はあるものですね。
お礼
回答ありがとうございます。 こういう事だったのです! 説明が分かりやすかったので助かりました。