我目前正在创建一个网站,并且有一些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
}
答案 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;
}
}
}
}