gpt4 book ai didi

javascript - 即,javascript 和 'item' 作为变量名

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:09:47 26 4
gpt4 key购买 nike

这是否被认为是 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'));
}
}
}

现在,这在 FF 和 Chrome 中工作正常,但在 IE 中生成错误。错误如下:

错误:无法获取属性“substr”的值:对象为 null 或未定义

我在我的代码中的几个地方都有这个函数(不幸的是,没有把它放在一个 js 文件中),我已经偶然发现了这个问题。问题似乎出在 item 变量上。如果将其更改为其他内容,即 myWildVarName,一切似乎都正常。我在 IE 中调试页面,我看到 item 是一个具有某些属性的对象......

那么,是错误还是菜鸟错误?

干杯

最佳答案

您的代码确实有一个错误,因为您从未声明 item 变量,因此成为 Horror of Implicit Globals 的牺牲品。 .

我的猜测是您的页面上有一些东西具有 nameid “item”,因此它正在成为 window< 的属性 因为 IE 这样做(许多其他浏览器也效仿)。您可能知道,window 的属性是全局属性,因此当您尝试在函数中分配给 item 符号时,您就是在分配给该全局属性。根据 item 是什么,IE 可能会尝试应用“实际上不分配给对象,而是分配给它的默认属性”逻辑(因为如果它想使用,它可以这样做宿主对象)并遇到问题。

声明您的局部变量(总是一个好主意),问题就会消失。


更新:既然您已经发布了实际错误,上面关于所发生事情的基本原理可能并不准确,但建议(声明本地)保持不变。 :-)

关于javascript - 即,javascript 和 'item' 作为变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6435677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com