2017-06-02 7 views
0

のは、私のようなものを持っているとしましょう以下:scripts.jsJavascriptに新しい動的変数を認識させる方法はありますか?

<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>The HTML5 Herald</title> 
</head> 
<body> 
    <script src="js/scripts.js"></script> 
</body> 
</html> 

I次のコードを持っている:

var gridId = window['someGridId']; 

問題はsomeGridIdは、AJAX呼び出しによってバックエンドで生成され、それがに追加ですDOMは.html()を使用します。そうすればscripts.jsはvarの存在を知らないので、コードは実行されません。

スクリプトに新しいvarの存在を知らせる方法はありますか?

+0

DOMに何も挿入しない理由は何ですか?あなたのAJAX呼び出しで応答データを取得した直後にデータを直接使用してください。 – Brad

+0

@Brad 'scripts.js'の中にあるものはいくつかの場所に共通するコードなので、AJAX呼び出しの' success() 'の中にこのコードを書くことは繰り返しません。 – ReynierPM

+0

あなたの質問はゼロになりますセンス。なぜあなたは何かを繰り返さなければならないでしょうか? – Brad

答えて

1

scripts.jsを再設計する必要があります。そのため、ロード時にグローバル変数を設定する必要はありません。 gridIdを使用する関数は、呼び出されるときにそれを設定する必要があります。例えば。代わりに:

gridId = window['someGridId']; 
function foo() { 
    // code that uses gridId 
} 

それは次のようになります。

function foo() { 
    var gridId = window['someGridId']; 
    // code that uses gridId 
} 

別の可能性は、グローバル変数を設定し、初期化機能を提供することです:

function initVars() { 
    gridId = window['someGridId']; 
    ... 
} 

scripts.jsを使用するすべてのウェブページですそれが依存しているすべてをロードした後にinitVars()に電話しなければなりません。動的にこれらの項目をロードしないページだけ行うことができます。

<script src="scripts.js"></script> 
</script>initVars();</script> 

をあなたのページには、DOM要素を追加するAJAX呼び出しのコールバック関数でinitVars()を呼び出すことができます。

関連する問題