2011-12-19 108 views
1

我在网页上有一个树形视图和一个删除按钮。树视图加载父节点和子节点。如果在选择具有子节点的父节点后点击删除,它应该会给我一个相应的提示信息和一个确认框。Haschildnodes()不起作用

现在,当我选择一个没有任何子节点的父节点时,它给了我下面的消息:“”元素至少有一个孩子。“ 当它应该给我这个消息:”元素有没有孩子“

代码:。

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

    var hasChilds = selectedNode.hasChildNodes(); 

    if (hasChilds) { 
     alert("The element has at least one child."); 
    } else { 
     alert("The element has no children."); 
    } 

请帮 谢谢你,对不起,如果我可能已经引起了我的解释混乱

+2

是什么让你确定元素没有任何类型的子节点*?请记住,HTML源代码中的杂散新行可能会导致文本节点被包含在DOM中。 – Pointy 2011-12-19 18:57:19

+0

我会检查每个孩子的'nodeType'。有可能是你没有想到的东西:http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-1950641247 – canon 2011-12-19 19:03:53

+0

我怎么知道哪个节点类型?有什么方法检查? – Ish 2011-12-19 19:11:39

回答

3

尝试检查

var hasChilds = selectedNode.children.length > 0; 

这将检查元素而不是childNodes,它将检查元素和文本节点,这些元素和文本节点可能来自标记中的空白。

+0

试过以上。但它提醒有没有孩子。 – Ish 2011-12-19 19:14:07