问题 创建DOM NodeList


我正在实现ECMA-357附件A中描述的所有可选E4X功能,而我在实现domNodeList(第A.1.2节和第A.2.2节)时遇到了问题。我如何创建自己的NodeList对象?

即使我创建一个新的XMLDocument并在XMLList中附加节点的每个domNode()表示,我仍然看不到如何创建包含所有内容的NodeList,因为通常会排除注释和处理指令。


7573
2019-06-23 00:04:43


起源

这个问题的背景是什么?你在写什么? - Ryan Lynch
瑞恩,你没看到domNodeList吗?我还清楚地说明它在ECMA-357中的定义。 - Eli Grey
为什么这个CW? - Crescent Fresh
Crescent:所以任何评论者都可以将最好的解决方案放在帖子中。 - Eli Grey


答案:


我发现我可以使用文档片段的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;
}

16



这将从dom中删除添加的节点 - Pancho