2

重複の可能性:
IE9 配列は indexOf をサポートしていません

私のコード:

var arrFruits = ['apple', 'banana', 'carrot', 'dates'];
var position = arrFruits.indexOf( 'carrot' );
position > -1 && arrFruits.splice( position, 1 );
alert( arrFruits );

上記のコードは、結果を のように表示していapple, banana, datesますChrome。しかし、それは動作していませんIE9

4

3 に答える 3

6

.indexOfサポートされていない問題である可能性があります。IE7/8モードでページをレンダリングするように悪意のあるdoctypeがトリガーされない限り、基本的にIE9でサポートされています。メソッド以外Array.indexOfはサポートされていません。

<!DOCTYPE html>IE9 が正しくレンダリングされるように、たとえば ( ) HTML5 doctype を使用することをお勧めします。

于 2012-12-11T08:25:54.393 に答える
2

IE8 までは.indexOfメソッドがありません。互換モードのIE9チェックを使用している場合は、このように追加できます。

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;
    }
}
于 2012-12-11T08:27:22.887 に答える
0

この行は何のためのものですか

position > -1 && arrFruits.splice( position, 1 );

これはおそらく IE で構文エラーを引き起こしている可能truefalseがあり、chrome と Firefox のより寛容な Javascript エンジンは無視しています。

たぶん、あなたはif声明を出すつもりでしたか?

 if(position > -1) {
     arrFruits.splice( position, 1 ); 
}
于 2012-12-11T08:33:08.337 に答える