我在它下面有一个父节点和一个子节点。如果父节点包含>=1个子节点那么它应该用" hello "进行确认否则如果父节点没有任何子节点那么它应该用"hi"
进行确认但是,它不是那样工作的。有时显示"hi",有时显示" hello "。
代码如下:
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
}
您似乎遇到了节点和元素之间的区别。节点也可以是,例如文本节点或空白节点。您可能需要元素。
您还会遇到在NodeList
上没有count
这样的属性的问题。您可能正在寻找length
。
用selectedNode.children.length
代替selectedNode.childNodes.count
。
(另外,变量selectedNode
命名错误:document.getElementById
返回元素,而不是节点。)
您需要的是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");
}