gpt4 book ai didi

javascript - Javascript函数可在FF,Opera等中运行,但在IE8中无法运行-如何修复

转载 作者:行者123 更新时间:2023-12-02 05:46:04 25 4
gpt4 key购买 nike

我具有以下功能(在IE6中工作,但在IE8中损坏)

function implode() { var str = '';
for(item in globvars) //<- IE8 wets itself here ...
str+= '\n' + globvars[item]+';';
return str+'\n';
}

似乎无害的小功能,但是IE8却使它停滞不前。谁能告诉我如何重写它以便在IE8(以及其他浏览器)中工作?

[编辑]

在脚本的开头(即,标记之后的第一行),我已经定义了globvar,如下所示:
var globvars = new Array();  // This should give globvars global scope

IE8中的错误是:

对象不支持此操作

最佳答案

I DO NOT have a variable named item anywhere else in my script



但是,您将拥有一个带有 id="item"name="item"的元素。 IE镜像具有id / name的元素,不仅是 document.item,而且是 window.item。 (显然,依靠任何一种都是不好的做法。)

因此,当您在不告诉 item=的情况下说出自己想要的 var时,愚蠢的IE认为您正在尝试分配给现有的HTMLElement,且其ID /名称位于 window中,并且由于元素不可写而抛出了适合的代码。这是即使对于全局变量也始终使用 var的原因之一。

您不应该使用 for...in迭代数组。它没有按照您的想法做。它可能会以错误的顺序返回数组项,并可能返回意外的非数字属性。始终使用旧的 for (var i= 0; i<array.length; i++)循环来获取数组中的项目; for...in仅适用于用作映射的 Object

无论如何,JavaScript的内置 join()几乎可以为您完成工作:
function implode() {
return '\n'+globvars.join(';\n')+';\n';
}

关于javascript - Javascript函数可在FF,Opera等中运行,但在IE8中无法运行-如何修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717240/

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