2011-12-19 4 views
1

私はウェブページ上にツリービューと削除ボタンを持っています。ツリービューは、親ノードと子ノードとともにロードされます。子ノードを持つ親ノードを選択した後で削除をクリックすると、それに応じて以下のメッセージが確認ボックスに表示されます。Haschildnodes()が機能しません

子ノードを持たない親ノードを選択すると、次のメッセージが表示されます: ""要素には少なくとも1つの子があります "。 "この要素には、子「

コード:。。

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

+0

私は各子の 'nodeType'を調べるでしょう。おそらくあなたが期待していなかったものがあります:http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-1950641247 – canon

+0

どのようなノードタイプがわかりますか?それをチェックする方法はありますか? – Ish

答えて

3

をチェックしてみ
var hasChilds = selectedNode.children.length > 0; 

これは、childNodesの代わりに要素をチェックし、マークアップの空白に由来する要素とテキストノードをチェックします。

+0

上記を試してください。しかし、それは子供がいないと警告します。 – Ish

関連する問題