Javascript全局变量不工作
Javascript global variable not working
我在这里看到了这个问题的几个版本,但似乎没有一个和我的问题相同,所以我想我应该创建一个新的问题。我一定是做了什么傻事,可是我怎么也看不出来。
我将从上下文开始,虽然它不是特别相关:我推迟jQuery与js代码的加载,这意味着我的代码文件都不能包含$(document).ready(...)
调用,因为"$"将在第一次传递时未定义。相反,我将准备好的函数添加到一个"全局"数组中,在jQuery异步加载后,我用以下命令调用所有这些函数:
function FireLoadEvents() {
while ( OnLoadEvents.length > 0 ) {
var item = OnLoadEvents.splice(0,1);
item[0].ready();
}
}
现在,在我的任何页面组件中,我可以使用以下代码添加一个事件,我希望在jQuery加载并且文档实际准备好时触发:
OnLoadEvents.push( { ready: function() { ... } } );
我已经在模板的顶部定义了OnLoadEvents
变量:
<script language="text/javascript">
var OnLoadEvents = new Array();
</script>
可以看到,它在任何函数作用域之外,并且在引用之前声明。当测试自己的时候,这个设置工作得很好,但是由于某种原因,当它被添加到我的实际页头时,在页面后面的脚本标签不能将项目添加到OnLoadEvents
变量。例如,php-include服务器端将以下内容拉入我的模板,并将这些行添加到我的页面主体中:
<script type='text/javascript'>
OnLoadEvents.push( { ready: function() {
if ( $('.sponsor-link').length != 0 ) {
...
}
} } );
</script>
当我在Chrome中点击此页面时,它报告上面的"push"行上出现以下异常:
Uncaught ReferenceError: OnLoadEvents is not defined
知道是怎么回事吗?为什么onloaddevents在我初始化它的几行之后是未定义的?我要注意的是,我还尝试将OnLoadEvents
定义为window.OnLoadEvents
并将其引用。
提前感谢!
修改如下:
<script language="text/javascript">
:
<script>
浏览器无法识别language
属性的值,因此不执行该代码。
现场演示: http://jsfiddle.net/gyhcM/2/
您不需要language
属性,也不需要type
属性,因为web浏览器默认使用JavaScript。
- 全局变量和全局对象的属性之间有什么区别吗
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 从Javascript方法返回全局变量
- AngularJS中的封装窗口全局变量
- javascript隐式全局变量
- jQuery全局变量is't工作
- 全局变量确实'在script标记中的外部.js文件之后,nt工作
- 将PHP变量传递给Javascript不能通过PHP函数工作(与全局变量无关)
- JavaScript 中的全局变量无法正常工作
- JavaScript 中的全局变量无法按预期工作
- Javascript全局变量不工作&更多
- jQuery Mobile中的全局变量不再工作
- JavaScript(JQuery)全局变量不工作
- 全局变量如何在两个javascript文件中的Function中的javascript中工作
- Javascript全局变量没有按预期工作.的帮助
- 全局变量是如何在javascript中工作的(回调)
- JavaScript中的全局变量是如何工作的
- Javascript全局变量不工作