在DOM遍历中,IE会忽略空白文本节点,但是firefox、chrome等现代浏览器会把空白文本节点识别为TextNode,在访问诸如
childNodes、firstChild、lastChild、nextSibling、previousSibling等节点时,可能会遇到TextNode。
解决方法大致有2种:
- 以nodeType过滤(一般过滤掉nodeType等于3的文本节点即可);
- 以tagName过滤(文本节点的tagName不存在);
例如获取nextSibling:
//nodeType
function getNextSibling(node){
var nextSibling = node.nextSibling;
while(nextSibling && nextSibling.nodeType !== 1){
nextSibling = nextSibling.nextSibling;
}
return nextSibling;
}
//tagName
function getNextSibling(node) {
var nextSibling = node.nextSibling;
while(nextSibling && !nextSibling.tagName){
nextSibling = nextSibling.nextSibling;
}
return nextSibling;
}
不知道还有没有其它好方法?
补充一下,dom.children(不含空白孩子节点)方法虽然不是w3c标准,但是实际上各个浏览器基本都支持,也算事实标准了。
更新:
最新的浏览器支持以下dom标准,去除空白节点、文本节点:
childElementCount
children
lastElementChild
nextElementSibling
previousElementSibling
https://developer.mozilla.org/en/DOM/element.firstElementChild
不过IE只支持children。
分享到:
相关推荐
### JavaScript DOM操作方法详解 #### 一、概述 在JavaScript中,DOM(Document Object Model)是一种处理HTML或XML文档的标准编程接口。通过DOM,开发者能够动态地访问文档中的元素,并可以修改其结构、样式和...
在JavaScript中,我们可以用以下方法操作DOM: - **查找节点**:`getElementById()`, `getElementsByClassName()`, `getElementsByTagName()`, `querySelector()`, `querySelectorAll()`等方法可以帮助我们找到文档...
在DOM中,存在许多有用的属性和方法,这些工具使得对文档的操作变得简单且高效。下面列举了一些常见的DOM属性和方法: - **getElementById**: 根据ID获取单个元素。 - **getElementsByTagName**: 获取具有特定标签...
1. DOM中的HTML文档结构: 在DOM的视角下,HTML文档被抽象成一棵树,其中`<html>`元素作为根节点,`<head>`、`<title>`和`<body>`是其直接子节点。`<body>`内的元素如`<table>`、`<span>`、`<p>`等是它的子节点。...
这个“dom4j示例”压缩包很可能是包含了一些示例代码,帮助学习者理解DOM4J的工作原理和常用操作。 DOM4J的核心概念包括元素(Element)、属性(Attribute)、文本(Text)以及命名空间(Namespace)。在XML文档中...
深入学习DOM,我们需要理解其核心概念、API以及如何在实际编程中应用。 首先,DOM是W3C组织制定的标准,它将网页内容抽象为一系列相互关联的对象,每个对象都有自己的属性和方法。DOM对象分为不同的层次,包括...
3. **节点操作**:DOM树中的每个元素、属性、文本等都表示为一个节点,如`ElementNode`, `AttrNode`, `TextNode`等。可以使用`getElementsByTagName`, `getElementById`, `getElementsByTagnameNS`等方法查找特定...
在Web开发中,BOM(Browser Object Model)和DOM(Document Object Model)是非常重要的两个概念,它们构成了前端JavaScript操作网页的基础。 ##### BOM:浏览器对象模型 BOM并不是一个标准,而是浏览器厂商为了...
HTML DOM(文档对象模型)是Web开发中用于访问和操作HTML或XML文档的标准接口。它将HTML页面结构转化为一个可编程的对象模型,使得开发者可以通过JavaScript或其他脚本语言对页面进行动态更新和交互。在这个模型中,...
DOM解析器将整个XML文档加载到内存中,构建一个树形结构,允许开发者通过节点操作来访问和修改XML内容。以下是对DOM解析XML的详细阐述: 1. **DOM模型**:DOM是一种标准,由W3C组织制定,它将XML文档视为一系列可以...
节点是DOM中的基本单元,它们分为多种类型,如Element(元素节点)、Text(文本节点)、Comment(注释节点)等。每个Node对象都有特定的`nodeType`属性来标识其类型。例如,Element节点的`nodeType`值为1,Text节点...
在Web开发中,尤其是涉及到DOM操作和Ajax交互时,浏览器之间的差异性往往会给开发者带来一些挑战。"FireFox中textNode分片的问题"是其中一个典型的例子,尤其在处理大量文本数据时。这个问题主要体现在Firefox(以及...
在Firefox中,JavaScript可以用来操作XML DOM。以下是一些关键步骤和概念: 1. **创建XML对象**:首先,你需要创建一个XMLDocument对象来加载XML数据。这可以通过`XMLHttpRequest`对象或`DOMParser`对象实现。 - ...
在JavaScript编程中,操作DOM(文档对象模型)是非常常见的任务,因为几乎所有的前端开发都需要通过DOM来与页面上的元素进行交互。DOM提供了丰富的API供我们操作网页上的各个元素。本文将重点讲解两个属性——...
【JavaScript中的DOM节点类型详解】 DOM(Document Object Model)是一种标准,它允许程序和脚本动态更新、添加、删除和改变HTML和XML文档的内容和结构。JavaScript与DOM结合,为Web开发提供了强大的能力,使开发者...
在JavaScript中,一旦创建了节点,接下来就是将节点追加到DOM中。可以通过使用`appendChild()`或`insertBefore()`等方法实现。 - `appendChild()`方法将一个节点追加到指定父节点的子节点列表末尾。 - `...
DOM 允许开发者执行诸如创建、读取、更新或删除文档中的元素等操作。 #### 二、DOM 的常用方法与属性 1. **`document.getElementById()`**: 用于根据指定的 `id` 获取单个元素。 - **示例**: ```javascript ...
`DOMSerializer.java`文件中的主要功能就是构建和操作这个DOM树。 1. **DOM的创建**: 在`DOMSerializer.java`中,首先需要创建`Document`对象,这是DOM树的根节点。这通常通过`DocumentBuilderFactory`和`...