getElementById()用于元素的子元素

时间:2013-03-07 10:35:36

标签: javascript

getElementById()位于document对象上。

如果我已经有元素参考,我怎样才能找到具有给定ID的孩子(或孩子的孩子等)?

var parent = document.getElementById(parentId),
    child = parent.getElementById(childId);

此代码失败,因为页面上的普通元素没有getElementById方法。

(我处于维护模式,ID不一定是唯一的,也不能使用jQuery)。

2 个答案:

答案 0 :(得分:8)

您可以使用querySelector()

child = parent.querySelector("#" + childId);

答案 1 :(得分:1)

您可以自己循环所有子节点吗?

或许这样的事情:

GetChildElementByID = function (rootElement, id){
    var children = GetAllNodes(rootElement);
    for(var i in children){
        var element = children[i];
        if(element.id == id){
            return element;
        } 
    }
    return null;
}

GetAllNodes = function (rootElement) {
    var nodes = [];
    var childNodes = rootElement.childNodes;
    for (var i in childNodes) {
        var node = childNodes[i];
        if (node.nodeType) {
            nodes.push(node);
        }
        nodes.push.apply(nodes, GetAllNodes(node));
    }
    return nodes;
}