hum*_*ird 3 javascript cross-browser
这被认为是IE中的JS错误吗?
请检查以下功能
function select_deselect_all_items(status)
{
select_deselect_items_under_panel(status, $('myPanel'));
panel = $('myPanel');
var items = panel.getElementsByTagName('input');
for (var n = 0; n < items.length; n++) {
item = items[n];
if (item.id.substr(0, 10) == 'myItems_') {
item.checked = status;
select_deselect_items_under_panel(status, $('myPanel'));
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这在FF和Chrome中运行良好,但在IE中生成错误.错误如下:
Error: Unable to get value of the property 'substr': object is null or undefined
我在整个代码中的几个地方都有这个功能(遗憾的是没有把它放到一个js文件中)我已经偶然发现了这个问题.问题似乎是item
变数.如果将其更改为其他内容,即myWildVarName
事情似乎正常.我在IE中调试了页面,我看到这item
是一个具有某些属性的对象......
那么,一个错误还是一个新手的错误?
干杯
你的代码中确实存在错误,因为你从未声明item
变量,因此成为Implicit Globals恐怖的牺牲品.
我的猜测是,你有你的页面有任何的东西name
或id
"项",所以这一点变得的一个属性window
,因为IE浏览器是(和许多其他浏览器也纷纷效仿).您可能知道,属性window
是全局变量,因此当您尝试分配item
函数中的符号时,您将分配给该全局属性.根据具体item
情况,IE可能会尝试应用"不实际分配给对象,而是分配给它的默认属性而不是"逻辑(因为如果它想要与宿主对象一起允许这样做)并遇到问题.
声明你的局部变量(总是一个好主意),问题应该消失.
更新:既然你已经发布了实际的错误,那么上面发生的事情的理由可能不是正确的,但建议(声明本地)保持不变.:-)
归档时间: |
|
查看次数: |
2199 次 |
最近记录: |