Javascript-使用BFS从头开始获取getElementID? [英] Javascript - getElementID from scratch using BFS?

查看:88
本文介绍了Javascript-使用BFS从头开始获取getElementID?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to learn javascript, and spent tonight writing a getElementByID() function using Breadth-First Search. In short: I'm lost.

小提琴: 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');

有帮助吗?

推荐答案

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

You're missing a for loop in the top half of your code. Where is i defined?

这是我的写法:

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

这篇关于Javascript-使用BFS从头开始获取getElementID?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆