2011-12-22 5 views
0

나무가 보입니다. 선택한 노드의 이름을 경고하고 싶습니다. 그러나 내 코드는 다른 노드를 선택 했음에도 처음 선택된 노드의 이름을 계속 유지합니다.선택된 노드 값 가져 오기

예를 들어 응용 프로그램을 시작할 때 Node "A"를 선택하면 "A"가 경고됩니다. 그러나 다른 노드를 선택하면 여전히 "A"로 경고합니다. 트 리뷰 데이터베이스에서 생성되는

function childnode(event) { 
    var treeViewData = window["<%=nav_tree_items.ClientID%>" + "_Data"]; 
    var selectedNode = document.getElementById(treeViewData.selectedNodeID.value); 

    alert(selectedNode.nodeName.toString());    

    return false; 
} 

: 여기

는 지금까지 코드입니다.

답변

0

여기에는 약간의 컨텍스트가 있으므로 일부 사용자 상호 작용에 따라 선택한 노드를 가져 오려고한다고 가정합니다.

이벤트 위임을 사용하는 것이 좋습니다. 이 코드는 트리 DOM 노드에 이벤트 핸들러를 설정합니다.이 이벤트 핸들러는 트리 셀 안에있는 테이블 셀에서 발생한 모든 클릭 이벤트를 처리합니다. 나는 당신이 테이블을 사용하고 있다고 가정하고 있습니다. 내가 틀렸다면 'TD'문자열을 노드를 정의하는 올바른 태그 이름으로 변경하십시오.

이벤트 처리기를 실행하면 활성 노드에 대한 참조가 트리 노드에 저장됩니다. 클릭 이벤트 중에 액티브 노드를 사용하여 무언가를하려면 여기가 코드를 삽입하는 곳입니다. 다른 범위에서 현재 선택된 노드에 액세스하려는 경우 아래에서 작성한 tree.getSelected()를 사용하십시오.

tree.onclick = function (e) { 
    var target = e.target || window.event && window.event.srcElement; // Compatibility code 

    while (target.tagName !== 'TD') { // Assumes Table cells as the node you are interested in. Replace with other or check className or similar 
     target = target.parentNode; 
     if (target === this) { 
      return; // No relevant node was hit and event bubbled to tree container 
     } 
    } 

    this.selected = target; 

    alert(target); 
}; 

tree.getSelected = function() { 
    return this.selected; 
} 
+0

고마워요! – Ish

관련 문제