2017-06-02 70 views
0

比方說,我有類似如下:有沒有什麼方法可以讓Javascript知道新的動態變量?

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

scripts.js我有以下代碼:

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> 

您的網頁可以在AJAX調用中增加了DOM元素的回調函數調用initVars()

相關問題