为什么IE7的JavaScript数组.indexOf方法不起作用?

4
IE7中为什么javascript的array.indexOf方法不能正常工作?以下是一个示例:
function loaderFn()
{
    var arr=["0","1","2"];
    var b = arr.indexOf("1")
    alert("Index of 1 is "+b);
}

在IE7中的第4行(arr.indexOf(“1”)),会抛出“对象不支持属性或方法'indexOf'”错误。为什么只有在IE7中会发生这种情况?如何使用javascript在IE7中查找值在数组中的索引号?

请查看:https://dev59.com/MnI-5IYBdhLWcg3wpqMK - couchemar
1个回答

10

在你的document.ready方法中添加以下内容:

if(!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(obj, start) {
         for (var i = (start || 0), j = this.length; i < j; i++) {
             if (this[i] === obj) { return i; }
         }
         return -1;
    }
}

之所以需要这个是因为IE8及以下版本不包括该方法。上述函数会检查它是否存在,如果不存在,则会将其扩展到数组原型中。


对于 JavaScript,你需要写成 window.onload = function () { JavaScript 代码放在这里 } - Arshad
@Arshad 在这种情况下并不是这样的。你提供的代码确保DOM已经完全加载。我回答中的JavaScript不依赖于DOM,如果需要,它会扩展数组原型。 - Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接