2013-03-07 331 views
4

getElementById()位於document對象上。getElementById()爲元素的子元素

如果我已經有一個元素參考,我怎麼能找到有給定ID的孩子(或孩子的孩子等)?

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

此代碼失敗,因爲頁面上的普通元素沒有getElementById方法。

(我處於維護模式,ID不一定是唯一的,並且不能使用jQuery)。

+0

你可以展示一些初步認識代碼.... – 2013-03-07 10:36:49

+2

爲什麼你的ID不是唯一的,什麼理由?如果(出於某種奇怪的原因,我想不出來),你必須有非唯一的ID,你可以使用'getElementsByTagName'或類似的東西。 – 2013-03-07 10:39:13

+0

這沒有任何意義。這意味着你想要多次分配相同的ID。 – Amberlamps 2013-03-07 10:41:46

回答

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