我们说我有以下内容:
<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存在?
答案 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()
。