2

NodeList への参照があり、後でスクリプトの別の領域から呼び出すために、関数をオブジェクトにアタッチしたいだけです。

// Quick and dirty hack to obtain a NodeList from given element(s):
var fragment = document.createDocumentFragment(),
    nodeList;
fragment.appendChild(document.getElementById("test").cloneNode(true));

nodeList = fragment.childNodes;
console.log(nodeList);

// How can a method be defined on the nodeList in IE8?
nodeList["someMethod"] = function() { alert("YOU WIN!"); };
nodeList.someMethod();

実際の例: http://jsfiddle.net/gCwAr/

上記のコードは、IE9、Chrome、Firefox、Safari、Opera のブラウザーで動作します。

最後から 2 番目の行で次のエラーがスローされるため、私の質問はIE8 でコードを動作させる方法です。

オブジェクトはこのプロパティまたはメソッドをサポートしていません

4

2 に答える 2

1

DOM オブジェクトなどのホスト オブジェクトを拡張することは、一般的にはお勧めできません。やらないでください。代わりに、追加のメソッドを持つ独自のオブジェクトで NodeList をラップします。

于 2012-11-08T11:40:05.903 に答える