getElementById()
位于document
对象上。
如果我已经有元素参考,我怎样才能找到具有给定ID的孩子(或孩子的孩子等)?
var parent = document.getElementById(parentId),
child = parent.getElementById(childId);
此代码失败,因为页面上的普通元素没有getElementById
方法。
(我处于维护模式,ID不一定是唯一的,也不能使用jQuery)。
答案 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;
}