2011-04-19 5 views
0

다음과 같은 방법으로 트리 구조를 사용하는 웹 사이트에서 작업하고 있습니다. 목록이 만들어지고이 목록의 요소 자체가 목록이면 appendChild를 사용하여 첫 번째 목록에 추가됩니다. 큰 목록은 'tree'라는 div에 저장됩니다. div 'tree'의 내용에 액세스하고 노드를 통해 표시하려고합니다.DOM 트리를 반복하는 방법은 무엇입니까?

여러 가지 방법으로 코드를 작성하려고했지만 작동하지 않습니다. 누군가 그 방법을 알고 있습니까?

편집 당신이 나무에 여러 가지 다른 기능이 필요합니다 생각한다면

+0

무슨 뜻인지 혼동 ... –

+0

관련 코드를 게시 할 수 있습니까? – Don

답변

1

이 기능은 반복에 모습을 가지고하는 것이 좋습니다 (내 코드가 너무 길다).

_SU3.treeIterate = function(parent, callback) { 
    var children = _SU3.getChildren(parent); 
    for (var i = 0; i < children.length; i++) { 
     var child = children[i]; 
     callback(parent, child); 
     _SU3.treeIterate(child, callback); 
    }  
}; 

_SU3.getChildren = function(parent) { 

    var children = new Array(); 

    var childNodes = parent.childNodes; 
    if (childNodes == null) 
    return children; 

    for (var i = 0; i < childNodes.length; i++) { 
    var child = childNodes[i]; 
    if (child.tagName == "li" || child.tagName == "LI") { 
     children.push(child); 
    } 
    } 
    return children; 
}; 

참고 : 다음 getChildren() 함수는 "리"항목을 찾아이 예에서 당신은 그것을 너무 부모와 자식 요소를 가져 와서 콜백을 전달할 수 있습니다. 필요한 경우 수정하십시오.

관련 문제