Search code examples
javascriptdome4x

Creating a DOM NodeList


I'm implementing all of the optional E4X features described in ECMA-357 Annex A and I'm having trouble implementing domNodeList (§A.1.2 and §A.2.2). How would I create my own NodeList object?

Even if I create a new XMLDocument and append every domNode() representation of the nodes in an XMLList, I still don't see how I could create a NodeList containing everything as comments and processing instructions are usually excluded.


Solution

  • I figured out that I could use the childNodes attribute of a document fragment to create a NodeList. This was my solution:

    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;
    }