我的代码:
var arrFruits = ['apple', 'banana', 'carrot', 'dates'];
var position = arrFruits.indexOf( 'carrot' );
position > -1 && arrFruits.splice( position, 1 );
alert( arrFruits );
以上代码在apple, banana, dates
中将结果显示为Chrome
。但它不适用于IE9
。
答案 0 :(得分:6)
可能是.indexOf
不受支持的问题。它基本上在IE9中受支持,除非某些恶意doctype触发它以IE7 / 8模式呈现页面。不支持Array.indexOf
方法。
我建议使用HTML5 doctype作为示例(<!DOCTYPE html>
)以确保IE9正确呈现。
答案 1 :(得分:2)
直到IE8它没有 .indexOf 方法,you can add it like this,如果您使用IE9 check进行兼容模式
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
"use strict";
if (this == null) {
throw new TypeError();
}
var t = Object(this);
var len = t.length >>> 0;
if (len === 0) {
return -1;
}
var n = 0;
if (arguments.length > 1) {
n = Number(arguments[1]);
if (n != n) { // shortcut for verifying if it's NaN
n = 0;
} else if (n != 0 && n != Infinity && n != -Infinity) {
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
}
if (n >= len) {
return -1;
}
var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
for (; k < len; k++) {
if (k in t && t[k] === searchElement) {
return k;
}
}
return -1;
}
}
答案 2 :(得分:0)
的这一行是什么
position > -1 && arrFruits.splice( position, 1 );
它评估为true
或false
,然后你不对它做任何事情。这可能会导致IE中的语法错误,Chrome和Firefox上更宽容的Javascript引擎忽略了这一点。
也许您打算发表if
声明?
if(position > -1) {
arrFruits.splice( position, 1 );
}