检查父节点是否包含ChildNodes

Check whether parent contains ChildNodes

本文关键字:ChildNodes 包含 是否 父节点 检查      更新时间:2023-09-26

我在它下面有一个父节点和一个子节点。如果父节点包含>=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");
}