2016-04-02 2 views
1

私の問題は、私は(スクリプトのdiv要素の親は、このスクリプトの前にある)のjavascript機能はJavaScriptを経由して挿入されたスクリプトタグは、未定義のまま内

var script = document.createElement('script');  
    script.setAttribute('type', 'text/javascript'); 
    document.getElementById("fastexe").appendChild (script); 

スクリプトタグトラフを作成するときにということであり、私は関数を挿入それに好きなので

script.innerHTML = "function in_my_script(){ \n"; 
    script.innerHTML += "alert('test'); \n }"; 

私はコンソールを介して、あるいは、このように私の機能(function_in_my_script)を呼び出すしようとすると:

script.innerHTML += "\n function_in_my_script();"; 

明らかに理由がないので、関数定義されていないエラーが発生します。私はさまざまな関数名で試してみましたが、関数の中には何もなく、関数内に別の警告がありましたが、結果は変わりませんでした。

なぜ機能が未定義のままであるのか分かりません。ご協力いただきありがとうございます。

+1

何ブラウザあなたはこれをやっているでは? Afaff、いくつかはスクリプト要素のinnerHTMLに問題があります – Bergi

+1

DOMに追加する前にscript要素を埋めてください。それが評価される唯一の時期です。 – Bergi

+0

あなたの関数は 'function_in_my_script'ではなく' in_my_script'と呼ばれています。これが単なるコード例であれば、あなたの質問を[編集]してください。 – Xufox

答えて

1

SCRIPT要素のinnerHTMLに文字列を追加するたびに、ブラウザはその要素を実行しようとします。これにより、SCRIPTが単にfunction in_my_script(){の場合に構文エラーが発生します。

代わりに、変数でスクリプトの内容を構築し、その後、すべてを一度script.innerHTMLに追加します。

var script = document.createElement('script'), 
 
    s; 
 

 
script.setAttribute('type', 'text/javascript'); 
 
document.getElementById("fastexe").appendChild(script); 
 

 
s = "function in_my_script(){ \n"; 
 
s += "alert('test'); \n }"; 
 
s += "\n in_my_script();"; 
 

 
script.innerHTML= s;
<div id="fastexe"></div>

+0

作業中!本当にありがとう、それは決してそれを解釈することはできませんでした! – Apotheose

関連する問題