此函数在表单onSubmit期间执行,并且在Firefox和Chrome中正常工作,但在IE中则无效。我怀疑它是indexOf,但我似乎找不到让它工作的方法。
function checkSuburbMatch(e) {
var theSuburb = document.getElementById('suburb').value;
var thePostcode = document.getElementById('postcode').value;
var arrayNeedle = theSuburb + " (" + thePostcode + ")";
if(suburbs.indexOf(arrayNeedle) != -1) {
alert("Suburb and Postcode match!");
return false;
} else {
alert("Suburb and Postcode do not match!");
return false;
}
}
答案 0 :(得分:17)
IE在Array上根本没有此方法,您可以自己添加,from MDC:
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
如果缺少.indexOf()
,则会添加{{1}}(此时这意味着您在IE&lt; 9中),然后您可以使用它。至于为什么连IE8都没有这个呢?我无法帮助你...
答案 1 :(得分:9)
如果您已在项目中使用jQuery,则可以使用$ .inArray()
答案 2 :(得分:0)
indexOf()和其他人不喜欢非字符串变量。在郊区添加.toString(),它应该修复它。
答案 3 :(得分:-1)
使用关联数组时这个函数很糟糕。
如果您将该功能放在代码中并执行此操作
var a = new Array();
a["one"] = "1";
for(var i in a){
alert(i)
}
你得0,indexOf
这意味着你插入了indexOf
作为你创建的每个数组的关键
但是数组应该只有一个键,那就是“一个”
使用jQuery!
-Mekias