Javascript无法在IE7和IE8中运行

时间:2011-11-17 14:53:02

标签: javascript internet-explorer

我目前正在创建一个网站,并且有一些javascript适用于除IE7和IE8之外的所有浏览器。我已经通过插入几个'alert'语句对代码进行了一些测试,并推断出javascript在一个特定的'if'语句中断开。它不是'if'语句中的代码,因为我也测试了它。

我自己看不到实际的'if'语句有什么问题,但如果IE7 / IE8和我生成的代码有问题,请告诉我。代码可以在下面看到。

提前感谢您的帮助。

var Items = new Array("a","b","c","d");
var queryString = window.location.search.substring(1);

if(Items.indexOf(queryString) != "-1"){
    //code goes here
}

2 个答案:

答案 0 :(得分:4)

IE的Array原型上没有“indexOf()”函数。如果有的话,它会返回一个数值,而不是一个字符串。

您可以在MDN documentation page找到函数的“indexOf()”polyfill。

此外,在声明和初始化数组时,请使用数组常量表示法:

var Items = ["a", "b", "c", "d"];

答案 1 :(得分:0)

以下是在不支持它的浏览器中扩展Array对象以支持indexOf的一种方法。这样做有其自身的问题,如果您通过for(x in a)(未建议)迭代数组并且不检查hasOwnProperty,这将导致您出现问题。

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