0

我正在使用 Javascript 编写一个搜索功能,该功能已接近完成并且在 chrome 上运行良好,但在资源管理器中却不行。我使用了资源管理器开发工具,它告诉我这是它无法处理的行:

if (compareElement.indexOf(compareString)!== -1 &&
    processFindings.indexOf(processes[i]) === -1)

错误是 Object 不支持此属性或方法。

用于读取的行:

if(compareElement.indexOf(compareString)!== -1)

它工作得很好,只有当我添加了资源管理器无法处理的额外条件时。

谁能帮我这个?

4

2 回答 2

2

并非所有版本的 IE 都有 . indexOf()数组的方法。有一个 polyfill 可以很好地工作。

见这里: https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf

但是,这可能会导致无法正确迭代数组的代码出现问题。

于 2012-09-05T00:16:16.507 回答
0

您可以复制该方法(如果它不存在),但使用原型将要求它在对其进行任何调用之前存在。一个例子:

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(searchElement,fromIndex) {
        fromIndex = parseInt(fromIndex || 0);
        for (var i = 0; i < this.length; i++) {
            if (this[i] == searchElement) return i;
        }
        return -1;
    }
}
于 2012-09-05T00:27:58.200 回答