9

IE 8 でa を配列に変換するのに苦労していNodeListます。以下は Chrome では完全に機能しますが、IE 8toArray()では有効と認識されません。

NodeList.prototype.toArray = function() {
    var a = [];

    for (var i = 0, len = this.length; i < len; i++) {
        a[i] = this[i];
    }

    return a;
}

document.all.tags("div").toArray();

正気を確認するためだけにプロトタイプ関数を配列に追加しようとしましたが、正しく動作しました。NodeListそれは、IE 8が実際には?を返さないと私に思わせます。完全な例を次に示します。

http://jsfiddle.net/e4RbH/

私は何を間違っていますか?

4

4 に答える 4

3

まず、使用しないでください。これはdocument.all非標準であり、非推奨です。document.getElementsByTagNameケースのDIV要素を取得するために使用します。

次に、次のようなDOMオブジェクトを拡張しないでください。NodeList組み込みオブジェクトは非常に奇妙な種類であり、通常使用する他のオブジェクトのように動作する必要はありません。これの詳細な説明については、この記事を参照してください:DOMを拡張することの何が問題になっていますか

于 2010-12-29T21:08:40.327 に答える
1

NodeListIE は標準的な方法ではサポートしていません。これが、ブラウザのコア オブジェクトを拡張せずに独自の名前空間を展開する必要がある理由です。

alert( typeof window.NodeList )未定義かどうかを確認できます。

于 2010-12-29T21:04:03.387 に答える