有没有办法让Javascript知道新的动态变量?

时间:2017-06-02 23:31:30

标签: javascript jquery

我们说我有以下内容:

<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调用在后端生成的,并且它使用.html()附加到DOM。那样scripts.js不知道var的存在,因此代码不会被执行。

有没有办法让脚本知道新的var存在?

1 个答案:

答案 0 :(得分: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()