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