5

getElementById()document物体上。

如果我已经有一个元素引用,我如何找到具有给定 ID 的孩子(或孩子的孩子等)?

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

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

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

4

3 回答 3

8

你可以使用querySelector()

child = parent.querySelector("#" + childId);
于 2013-03-07T10:39:55.787 回答
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;
}
于 2013-03-07T10:39:40.363 回答
0

查询选择器可以找到父母的孩子。

document.querySelector("#parentID > #childID");

于 2022-01-21T16:25:30.120 回答