获取selectednode值

时间:2011-12-22 18:37:05

标签: javascript asp.net

我有树视图。我希望提醒所选节点的名称。 但是,尽管有其他节点选择,我的代码仍然给我第一次选择的节点名称。

因此,例如,如果我在启动应用程序时选择了节点“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;
 }

树视图是从数据库生成的。

1 个答案:

答案 0 :(得分:0)

这里的上下文非常少,所以我假设您希望根据一些用户交互获取所选节点。

我建议使用事件委托。此代码在树节点上设置一个事件处理程序,它将处理在其内部的表格单元格上发生的任何单击事件。我假设你正在使用一张桌子。如果我错了,请将“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;
}