• ベストアンサー

外部リンクについて質問です。

通常のリンクは下のような感じで外部から呼び出してきますが、 <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> など、他にもいくつか試しましたがうまくいきません。 代入値をアドレスとして使えないのでしょうか? もう完全に行き詰って全く分かりません。 すみませんが分かる方よろしくお願いします。

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

  • ベストアンサー
  • pick52
  • ベストアンサー率35% (166/466)
回答No.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()を使うのは よくないらしいので。

googleoooo
質問者

お礼

回答ありがとうございます。 こういう事だったのです! 説明が分かりやすかったので助かりました。

その他の回答 (4)

回答No.4

<script> form="1.js"; document.write('<'+'script type="text/javascript" src="'+form+'"><"'+'/script>'); </script> 参考 ANo.1 > '<'+'script この部分の分割は特に必要ないかも。念のため、ということで。 外部ファイルにすれば、わざわざHTMLタグを分割する必要はありません。

googleoooo
質問者

お礼

回答ありがとうございます。 こっちは、かなり簡単そうです。! 理解しやすいですね。

  • pick52
  • ベストアンサー率35% (166/466)
回答No.3

こんな感じで挿入するといいと思います。 // 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>

googleoooo
質問者

お礼

回答ありがとうございます。 ANo.2の方に似てますね。 ふむふむ。 重要な所の意味が出来ないので、google先生で調べてみます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

#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)

googleoooo
質問者

お礼

回答ありがとうございます。 う~ん。 やっぱり途中で</script>終わってたのですか・・・。 知らないものばかり出てきてるのでgoogleで意味を調べてから使ってみます。

googleoooo
質問者

補足

すみません。 googleで、document.createElementと調べるといっぱい出てきていくつか似たようなものを紹介されてたのですが、説明がされてなかったので意味がよく理解できません。 上のソースがどのような働きがあるのか、お時間が空いている時でいいのでよろしければ教えていただけないでしょうか?

  • gekkouya
  • ベストアンサー率15% (3/19)
回答No.1

こんな感じですか? <script> form="1.js"; document.write("<script type='text/javascript' src='"+form+"'></script>"); </script> 普通はやらないと思いますけど 後↑テストも何もしてないし文法のチェックもしてないのであしからず

googleoooo
質問者

お礼

回答ありがとうございます。 わお! Scriptの中でもう一度呼び出せるなんて知りませんでした。 document.writeの中に・・・。 色々方法はあるものですね。

関連するQ&A

専門家に質問してみよう