2011-12-16 48 views
0

我有一個父代和一個子代節點。 如果父級包含> = 1個子節點,那麼它應該使用「helllooo」進行確認,否則如果父級沒有任何子節點,則應該使用「hi」進行確認檢查父代是否包含ChildNodes

但是,它不會以這種方式工作。它有時顯示「嗨」和其他時間「helllooo」。

下面是代碼:

function childnode() { 
    var treeViewData = window["<%=items.ClientID%>" + "_Data"]; 

    //if (treeViewData.selectedNodeID.value != ""){ 
    var selectedNode = document.getElementById(treeViewData.selectedNodeID.value); 
    if (selectedNode.childNodes.count >= 0) { 
    return confirm("heloo"); 
    } 
    else { 
    return confirm("hi"); 
    } 

    return false; // don't send form 
} 
+0

Shift + Tab請 – 2011-12-16 16:49:23

+0

在你的文字,你說如果計數應該用「heloo」迴應> = 1,但你的代碼> = 0。這是一個錯字嗎? – 2011-12-16 16:51:14

+0

我不確定你的意思?關於什麼? – Ish 2011-12-16 16:51:32

回答

0

你想要length財產,而不是count屬性。另外,我覺得你的意思是> 0,而不是>= 0

var selectedNode = document.getElementById(treeViewData.selectedNodeID.value); 
if (selectedNode.childNodes.length > 0) { 
    return confirm("heloo"); 
} 

這會告訴你是否有任何節點,包括文本節點。如果你想知道是否有任何子節點是元素,你可以看看nodeType屬性。

var selectedNode = document.getElementById(treeViewData.selectedNodeID.value); 
var children = selectedNode.childNodes; 
var anyChildElements = false; 

for (var i = 0; i < children.length; i++) 
    if (children[i].nodeType === 1) { 
     anyChildElements = true; 
     break; 
    } 

if (anyChildElements) { 
    return confirm("heloo"); 
} 
1

這很可能你節點元素之間運行到差異。 節點也可以是,例如,文本節點或空白節點。你可能需要元素。

您也有這樣的問題,如NodeList上沒有count等屬性。您可能正在尋找length

嘗試selectedNode.children.length而不是selectedNode.childNodes.count

(另外,你的變量selectedNode是名不副實:document.getElementById返回元素,而不是一個節點)