我正在实现 ECMA-357 附录 A 中描述的所有可选 E4X 功能,但在实现 domNodeList(§A.1.2 和 §A.2.2)时遇到了麻烦。我将如何创建自己的 NodeList 对象?
即使我创建了一个新的 XMLDocument 并将节点的每个 domNode() 表示附加到 XMLList 中,我仍然看不到如何创建一个包含所有内容的 NodeList,因为注释和处理指令通常被排除在外。
我正在实现 ECMA-357 附录 A 中描述的所有可选 E4X 功能,但在实现 domNodeList(§A.1.2 和 §A.2.2)时遇到了麻烦。我将如何创建自己的 NodeList 对象?
即使我创建了一个新的 XMLDocument 并将节点的每个 domNode() 表示附加到 XMLList 中,我仍然看不到如何创建一个包含所有内容的 NodeList,因为注释和处理指令通常被排除在外。
我发现我可以使用文档片段的 childNodes 属性来创建 NodeList。这是我的解决方案:
XML.prototype.function::domNodeList = function () {
var fragment = document.createDocumentFragment(),
len = this.length(),
i = 0;
for (; i < len; i++) {
fragment.appendChild(this[i].domNode());
}
return fragment.childNodes;
}