2017-06-02 69 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()

相关问题