考虑包含代码script.js
alert(theVar);
现在,我将js文件链接到文档,如
<script type="text/javascript">
var theVar= 'a alert';
</script>
<script type="text/javascript" src="script.js"></script> //Contains alert(theVar);
使用变量theVar
,我收到警报。这很好。
何时,
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
var theVar= 'a alert';
</script>
被使用,我没有收到警报。
我知道问题是由于变量,它是在加载js文件后声明的。
但是有没有办法让变量在文档中的任何地方声明?
答案 0 :(得分:6)
在script.js
做
window.onload = function() { alert ( theVar ) }
或者你最喜欢的图书馆dom ready fn,所以它会在某个事件之后而不是立即调用回调。
但是,这实际上取决于script.js
具有哪种功能,到目前为止还没有指定。
答案 1 :(得分:1)
重要的一点是代码以适当的顺序执行。您应该将调用延迟到alert(theVar)
,直到文档完全加载为止。例如,您可以将onload
事件处理程序附加到window
对象。
值得注意的是,调用外部* .js文件不会影响代码的运行方式。
答案 2 :(得分:0)
简单的解决方案:
将script.js
包含移至body
的最后一行。这样就可以使用在文档中任何一点声明的变量。
技术解决方案:
在script.js
内,在进行任何评估之前,先挂钩window.onload
事件。结果与更简单的解决方案相同,但允许您将脚本标记保留在头部(或任何地方)。