<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>nav</title>
<script type="text/javascript">
function test(){
var navId = document.getElementById("nav");
var childNum = navId.childNodes;
for(var i = 0;i<childNum.length;i++){
var node = childNum[i];
if (node.nodeType == Node.TEXT_NODE && /\s/.test(node.nodeValue)){
node.parentNode.removeChild(node);
}
}
alert(childNum.length);
}
</script>
</head>
<body onload="test();">
<dl id="nav">
<dd>
<ul>
<li>111</li>
</ul>
</dd>
<dd>
<ul>
<li>222</li>
</ul>
</dd>
<dd>
<ul>
<li>333</li>
</ul>
</dd>
</dl>
</body>
</html>
这是一个很常见的bug,浏览器里会把标签之间的空白处也认为是一个子节点,如果要正确的得到子节点的个数,必须把空白的节点删除。
关键点:if (node.nodeType == Node.TEXT_NODE && /\s/.test(node.nodeValue)).如果节点的类型是Node.TEXT_NODE (3)(即:
分享到:
相关推荐
删除节点时,如果只是简单地设置其父节点的子节点列表,可能会使被删除节点的位置变成一个空节点。这是因为DOM树中的位置仍然保留,但内容为空。 要解决这个问题,我们可以采取以下策略: 1. **使用正确的API**:...
需要注意的是,在某些浏览器中,例如Firefox,空白文本节点也会被视为子节点,这可能会导致与在其他浏览器(如Internet Explorer)中执行相同操作时出现不同的结果。因此在编写代码时,需要考虑到不同浏览器对于DOM...
2. **获取子节点**: 如果需要删除节点及其所有子节点,可以使用`GetChildItem()`递归遍历所有子节点并删除它们。 3. **删除节点**: 使用`DeleteItem()`函数删除树控件中的指定节点。这个函数接受一个`HTREEITEM`...
`removeChild` 方法从当前节点的子节点列表中删除指定的子节点。成功删除后返回被删除的节点,失败则返回 `null`。 ##### 18. replaceChild 从子节点列表中替换指定的子节点 `replaceChild` 方法用新的子节点替换...
- **removeChild**:从子节点列表中删除指定的子节点。 - **replaceChild**:替换子节点列表中的指定子节点。 - **save**:保存XML文件到指定位置。 - **selectNodes**和**selectSingleNode**:根据XPath表达式选择...
17. removeChild:从子结点列表中删除指定的子节点 18. replaceChild:从子节点列表中替换指定的子节点 19. Save:把 XML 文件存到指定节点 20. selectNodes:对节点进行指定的匹配,并返回匹配节点列表 21. ...
另一种方法是直接使用`text()`节点测试,这会返回所有直接子节点的文本内容,但不包括孙子节点或其他深层嵌套的文本。如果你想要获取所有子元素(包括孙子元素)的文本,可以先获取所有的子元素,然后对每个子元素...
此外,DOMDocument对象还提供了多种方法,如`appendChild`用于在子节点末尾添加新节点,`removeChild`用于删除指定子节点,`insertBefore`在特定子节点前插入新节点,`createElement`创建新元素节点等,这些都是操作...
如果被删除的节点有子节点,这些子节点也会一同被移除,除非另有指定。 至于“如果是叶子节点”的描述,这表明MyTreeCtrl可能对叶子节点(没有子节点的节点)进行了特殊处理。在某些应用中,叶子节点可能有特殊的...
在本文中,我们将深入探讨`QTreeWidget`的基础操作,包括如何创建、添加、删除、编辑和遍历节点,以及自定义样式和响应用户事件。 ### 1. 创建QTreeWidget 首先,我们需要在界面上添加`QTreeWidget`。在Qt ...
- **定义**:此属性返回节点的所有子节点列表,包括空白文本节点、元素节点等,也是只读的。例如,对于`<div><p>Hello</p></div>`这样的HTML片段,`div`节点的`childNodes`将包括一个`p`元素节点和可能的一个或多个...
2. `childNodes`属性返回一个包含所有子节点的实时NodeList,包括元素、文本和空白节点。 3. `children`属性返回一个只包含元素子节点的静态NodeList。 4. `firstChild`和`lastChild`属性分别返回第一个和最后一个子...
在获取子节点时,需要注意`childNodes`返回的是一个包含所有类型子节点的集合,这包括元素节点(标签)、文本节点(包括空白文本)和注释节点。这可能会导致与预期不符的结果,特别是在文本节点中存在空白符时。如果...
当调用这个函数并成功删除子节点时,它会返回被删除的节点对象;如果无法删除(例如,子元素不存在),则返回`null`。 在不同浏览器中,`removeChild()`的实现可能存在差异。在Firefox、Chrome以及IE8及以上版本的...
在实际开发中,`childNodes`常用于遍历DOM结构,添加、删除或修改子节点。例如,如果你想要找到某个元素的所有子元素,可以先获取`childNodes`,然后通过判断每个节点的`nodeType`属性(`1`表示元素节点)来过滤出...
子节点可以通过指定父节点的`Nodes`集合来添加,例如`node1.Nodes.Add("子节点1")`。 2. 编辑节点:使用`Node.Text`属性来更改节点的文本,如`node1.Text = "新节点名"`。 3. 删除节点:使用`Node.Remove()`方法来...
- `removeChild`: 从子节点列表中删除指定子节点。 - `replaceChild`: 用新节点替换子节点列表中的指定子节点。 - `save`: 将XML文档保存到指定位置。 - `selectNodes` 和 `selectSingleNode`: 使用XPath表达式...
3. **删除**:删除一个节点可能涉及到三种情况:节点没有子节点(叶子节点)、节点有一个子节点和节点有两个子节点。删除操作需要维护二叉搜索树的性质,可能需要调整其他节点来填补空白。 4. **遍历**:二叉搜索树...