有什么方法可以使JavaScript意识到新的动态VAR



假设我有类似的内容:

<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存在?

您需要重新设计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()

最新更新