【问题标题】:why IE7 javascript array.indexOf is not working? [duplicate]为什么 IE7 javascript array.indexOf 不起作用? [复制]
【发布时间】:2013-03-29 08:50:44
【问题描述】:

为什么在 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 中出现这种情况? IE7使用javascript查找数组中某个值的索引号的方法是什么?

【问题讨论】:

标签: javascript arrays internet-explorer-7 indexof


【解决方案1】:

在你的 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;
    }
}

这是必需的,因为 IE 直到 IE8 才包含此方法。上面的函数检查它是否存在,如果不存在就用它扩展 Array 原型。

【讨论】:

  • 对于javascript,需要写window.onload = function () { Javascript code goes here }
  • @Arshad 在这种情况下不是这样。您提供的代码确保 DOM 已完全加载。我的答案中的 javascript 不依赖于 DOM,如有必要,它会扩展 Array 原型。
猜你喜欢
  • 2016-10-23
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
相关资源
最近更新 更多