Javascript - 使用BFS从头开始getElementID?

Pau*_*Dee 0 javascript breadth-first-search

我正在尝试学习javascript,并且今晚使用广度优先搜索编写了一个getElementByID()函数.简而言之:我迷路了.

小提琴:http://jsfiddle.net/timdown/a2Fm6/

码:

var nodes = [];

function getElementById(node, id) {
    alert(nodes.length);
        if (node.childNodes[i].id == id) {
            return node.childNodes[i];
        } else if (node.childNodes[i].length > 0) {
          for (var i = 0, len = node.childNodes.length; i < len; ++i) {
            nodes.push(node.childNodes[i]);
          }
        }
    if (nodes.length > 0) {
      getElementById(nodes[0], id);  
    }
}

var el = getElementById(document.body, 'id');
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

Eri*_*ric 5

您在代码的上半部分缺少for循环.在哪里i定义?

这是我写的方式:

function getElementById(node, id) {
    //An array of all the nodes at the same depth
    var nodes = [node];

    //While the array is not empty
    while(nodes.length) {
        var newNodes = [];
        for(var i = 0; i < nodes.length; i++) {
            var children = nodes[i].childNodes;
            for(var j = 0; j < children.length; j++) {
                var child = children[j];
                if(child.id == id) {
                    return child
                }
                newNodes.push(child);
            }
        }

        //Replace nodes with an array of the nodes the next level down
        nodes = newNodes
    }
}
Run Code Online (Sandbox Code Playgroud)