我有树视图。我希望提醒所选节点的名称。 但是,尽管有其他节点选择,我的代码仍然给我第一次选择的节点名称。
因此,例如,如果我在启动应用程序时选择了节点“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 :(得分: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;
}