`
鹤惊昆仑
  • 浏览: 228980 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DOM操作中TextNode惹的麻烦

阅读更多
在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。
分享到:
评论
2 楼 鹤惊昆仑 2010-01-21  
谢谢luobin23628指正,已修改。
1 楼 luobin23628 2010-01-21  
第二种方法
如果下一个结点还是文本节点呢

相关推荐

    JS DOM操作方法

    ### JavaScript DOM操作方法详解 #### 一、概述 在JavaScript中,DOM(Document Object Model)是一种处理HTML或XML文档的标准编程接口。通过DOM,开发者能够动态地访问文档中的元素,并可以修改其结构、样式和...

    javascrip和xml Dom小练习

    在JavaScript中,我们可以用以下方法操作DOM: - **查找节点**:`getElementById()`, `getElementsByClassName()`, `getElementsByTagName()`, `querySelector()`, `querySelectorAll()`等方法可以帮助我们找到文档...

    使用DOM合理操作JS

    在DOM中,存在许多有用的属性和方法,这些工具使得对文档的操作变得简单且高效。下面列举了一些常见的DOM属性和方法: - **getElementById**: 根据ID获取单个元素。 - **getElementsByTagName**: 获取具有特定标签...

    文档对象模型(DOM)

    1. DOM中的HTML文档结构: 在DOM的视角下,HTML文档被抽象成一棵树,其中`<html>`元素作为根节点,`<head>`、`<title>`和`<body>`是其直接子节点。`<body>`内的元素如`<table>`、`<span>`、`<p>`等是它的子节点。...

    dom4j示例

    这个“dom4j示例”压缩包很可能是包含了一些示例代码,帮助学习者理解DOM4J的工作原理和常用操作。 DOM4J的核心概念包括元素(Element)、属性(Attribute)、文本(Text)以及命名空间(Namespace)。在XML文档中...

    DOM对象的深入学习

    深入学习DOM,我们需要理解其核心概念、API以及如何在实际编程中应用。 首先,DOM是W3C组织制定的标准,它将网页内容抽象为一系列相互关联的对象,每个对象都有自己的属性和方法。DOM对象分为不同的层次,包括...

    经典XML处理实例采用DOM处理模式

    3. **节点操作**:DOM树中的每个元素、属性、文本等都表示为一个节点,如`ElementNode`, `AttrNode`, `TextNode`等。可以使用`getElementsByTagName`, `getElementById`, `getElementsByTagnameNS`等方法查找特定...

    BOM和DOM模型图

    在Web开发中,BOM(Browser Object Model)和DOM(Document Object Model)是非常重要的两个概念,它们构成了前端JavaScript操作网页的基础。 ##### BOM:浏览器对象模型 BOM并不是一个标准,而是浏览器厂商为了...

    HTML DOM 常用的属性和方法

    HTML DOM(文档对象模型)是Web开发中用于访问和操作HTML或XML文档的标准接口。它将HTML页面结构转化为一个可编程的对象模型,使得开发者可以通过JavaScript或其他脚本语言对页面进行动态更新和交互。在这个模型中,...

    DOM解析XML

    DOM解析器将整个XML文档加载到内存中,构建一个树形结构,允许开发者通过节点操作来访问和修改XML内容。以下是对DOM解析XML的详细阐述: 1. **DOM模型**:DOM是一种标准,由W3C组织制定,它将XML文档视为一系列可以...

    AJAX文档对象模型DOM

    节点是DOM中的基本单元,它们分为多种类型,如Element(元素节点)、Text(文本节点)、Comment(注释节点)等。每个Node对象都有特定的`nodeType`属性来标识其类型。例如,Element节点的`nodeType`值为1,Text节点...

    FireFox中textNode分片的问题

    在Web开发中,尤其是涉及到DOM操作和Ajax交互时,浏览器之间的差异性往往会给开发者带来一些挑战。"FireFox中textNode分片的问题"是其中一个典型的例子,尤其在处理大量文本数据时。这个问题主要体现在Firefox(以及...

    FireFox下用XML DOM解析XML文档(ASP.NET Web)

    在Firefox中,JavaScript可以用来操作XML DOM。以下是一些关键步骤和概念: 1. **创建XML对象**:首先,你需要创建一个XMLDocument对象来加载XML数据。这可以通过`XMLHttpRequest`对象或`DOMParser`对象实现。 - ...

    JavaScript操作DOM元素的childNodes和children区别

    在JavaScript编程中,操作DOM(文档对象模型)是非常常见的任务,因为几乎所有的前端开发都需要通过DOM来与页面上的元素进行交互。DOM提供了丰富的API供我们操作网页上的各个元素。本文将重点讲解两个属性——...

    浅谈Javascript中的12种DOM节点类型

    【JavaScript中的DOM节点类型详解】 DOM(Document Object Model)是一种标准,它允许程序和脚本动态更新、添加、删除和改变HTML和XML文档的内容和结构。JavaScript与DOM结合,为Web开发提供了强大的能力,使开发者...

    js和jquery对dom节点的操作(创建/追加)

    在JavaScript中,一旦创建了节点,接下来就是将节点追加到DOM中。可以通过使用`appendChild()`或`insertBefore()`等方法实现。 - `appendChild()`方法将一个节点追加到指定父节点的子节点列表末尾。 - `...

    JavaScript_DOM编程—新版学习笔记.txt

    DOM 允许开发者执行诸如创建、读取、更新或删除文档中的元素等操作。 #### 二、DOM 的常用方法与属性 1. **`document.getElementById()`**: 用于根据指定的 `id` 获取单个元素。 - **示例**: ```javascript ...

    XMLHelperByDOM

    `DOMSerializer.java`文件中的主要功能就是构建和操作这个DOM树。 1. **DOM的创建**: 在`DOMSerializer.java`中,首先需要创建`Document`对象,这是DOM树的根节点。这通常通过`DocumentBuilderFactory`和`...

Global site tag (gtag.js) - Google Analytics