`
ice-cream
  • 浏览: 328250 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

删除空白子节点

阅读更多
<!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)(即: 纯文本,它没有子节点)并且内容为空白字符。

分享到:
评论

相关推荐

    解决XML节点删除后会留下一个空节点的问题

    删除节点时,如果只是简单地设置其父节点的子节点列表,可能会使被删除节点的位置变成一个空节点。这是因为DOM树中的位置仍然保留,但内容为空。 要解决这个问题,我们可以采取以下策略: 1. **使用正确的API**:...

    Javascript removeChild()删除节点及删除子节点的方法

    需要注意的是,在某些浏览器中,例如Firefox,空白文本节点也会被视为子节点,这可能会导致与在其他浏览器(如Internet Explorer)中执行相同操作时出现不同的结果。因此在编写代码时,需要考虑到不同浏览器对于DOM...

    VC++从树控件中删除节点项

    2. **获取子节点**: 如果需要删除节点及其所有子节点,可以使用`GetChildItem()`递归遍历所有子节点并删除它们。 3. **删除节点**: 使用`DeleteItem()`函数删除树控件中的指定节点。这个函数接受一个`HTREEITEM`...

    js节点操作

    `removeChild` 方法从当前节点的子节点列表中删除指定的子节点。成功删除后返回被删除的节点,失败则返回 `null`。 ##### 18. replaceChild 从子节点列表中替换指定的子节点 `replaceChild` 方法用新的子节点替换...

    JS_操作节点.doc

    - **removeChild**:从子节点列表中删除指定的子节点。 - **replaceChild**:替换子节点列表中的指定子节点。 - **save**:保存XML文件到指定位置。 - **selectNodes**和**selectSingleNode**:根据XPath表达式选择...

    javascript节点属性和方法

    17. removeChild:从子结点列表中删除指定的子节点 18. replaceChild:从子节点列表中替换指定的子节点 19. Save:把 XML 文件存到指定节点 20. selectNodes:对节点进行指定的匹配,并返回匹配节点列表 21. ...

    对Xpath 获取子标签下所有文本的方法详解

    另一种方法是直接使用`text()`节点测试,这会返回所有直接子节点的文本内容,但不包括孙子节点或其他深层嵌套的文本。如果你想要获取所有子元素(包括孙子元素)的文本,可以先获取所有的子元素,然后对每个子元素...

    JavaScript节点知识

    此外,DOMDocument对象还提供了多种方法,如`appendChild`用于在子节点末尾添加新节点,`removeChild`用于删除指定子节点,`insertBefore`在特定子节点前插入新节点,`createElement`创建新元素节点等,这些都是操作...

    MFC 树控件

    如果被删除的节点有子节点,这些子节点也会一同被移除,除非另有指定。 至于“如果是叶子节点”的描述,这表明MyTreeCtrl可能对叶子节点(没有子节点的节点)进行了特殊处理。在某些应用中,叶子节点可能有特殊的...

    QTreeWidget基础操作代码

    在本文中,我们将深入探讨`QTreeWidget`的基础操作,包括如何创建、添加、删除、编辑和遍历节点,以及自定义样式和响应用户事件。 ### 1. 创建QTreeWidget 首先,我们需要在界面上添加`QTreeWidget`。在Qt ...

    javascript节点操作

    - **定义**:此属性返回节点的所有子节点列表,包括空白文本节点、元素节点等,也是只读的。例如,对于`&lt;div&gt;&lt;p&gt;Hello&lt;/p&gt;&lt;/div&gt;`这样的HTML片段,`div`节点的`childNodes`将包括一个`p`元素节点和可能的一个或多个...

    DOM(二).pdf

    2. `childNodes`属性返回一个包含所有子节点的实时NodeList,包括元素、文本和空白节点。 3. `children`属性返回一个只包含元素子节点的静态NodeList。 4. `firstChild`和`lastChild`属性分别返回第一个和最后一个子...

    js如何获取兄弟、父类等节点

    在获取子节点时,需要注意`childNodes`返回的是一个包含所有类型子节点的集合,这包括元素节点(标签)、文本节点(包括空白文本)和注释节点。这可能会导致与预期不符的结果,特别是在文本节点中存在空白符时。如果...

    JavaScript的removeChild()函数用法详解

    当调用这个函数并成功删除子节点时,它会返回被删除的节点对象;如果无法删除(例如,子元素不存在),则返回`null`。 在不同浏览器中,`removeChild()`的实现可能存在差异。在Firefox、Chrome以及IE8及以上版本的...

    js -- childNodes

    在实际开发中,`childNodes`常用于遍历DOM结构,添加、删除或修改子节点。例如,如果你想要找到某个元素的所有子元素,可以先获取`childNodes`,然后通过判断每个节点的`nodeType`属性(`1`表示元素节点)来过滤出...

    VB Treeview控件详细使用方法

    子节点可以通过指定父节点的`Nodes`集合来添加,例如`node1.Nodes.Add("子节点1")`。 2. 编辑节点:使用`Node.Text`属性来更改节点的文本,如`node1.Text = "新节点名"`。 3. 删除节点:使用`Node.Remove()`方法来...

    php怎么得到dom元素.docx

    - `removeChild`: 从子节点列表中删除指定子节点。 - `replaceChild`: 用新节点替换子节点列表中的指定子节点。 - `save`: 将XML文档保存到指定位置。 - `selectNodes` 和 `selectSingleNode`: 使用XPath表达式...

    BST.rar_bst

    3. **删除**:删除一个节点可能涉及到三种情况:节点没有子节点(叶子节点)、节点有一个子节点和节点有两个子节点。删除操作需要维护二叉搜索树的性质,可能需要调整其他节点来填补空白。 4. **遍历**:二叉搜索树...

Global site tag (gtag.js) - Google Analytics