`
zhouyrt
  • 浏览: 1173189 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

children和childNodes差异

阅读更多

1,childNodes 属性,标准的,它返回指定元素的子元素集合,包括html节点,所有属性,文本。可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点。

 

有些人错误的使用()去取该集合元素,下表列出各浏览器对childNodes(i)的支持情况:

IE6/7/8 Firefox3.5 Safari4 Chrome4 Opera10
childNodes(i) 支持 不支持 支持 支持 支持

 

  2,有时候需要获取指定元素的第一个html子节点(非属性/文本节点),最容易想到的就是firstChild 属性。代码中第一个html节点前如果有换行,空格,那么firstChild返回的就不是你想要的了。可以使用nodeType来判断下。

function getFirst(elem){
	for(var i=0,e;e=elem.childNodes[i++];){
		if(e.nodeType==1)
			return e;
	}		
}

 

  3,children 属性,非标准的,它返回指定元素的子元素集合。经测试,它只返回html节点,甚至不返回文本节点。且在所有浏览器下表现惊人的一致。和childNodes 一样,在firefox下不支持()取集合元素。因此如果想获取指定元素的第一个html节点,可以使用children[0]来替代上面的getFirst函数。需注意children在IE中包含注释节点。

 

 

相关资源:




分享到:
评论
1 楼 lixinlixin2008 2009-12-13  
childNodes 是标准的吧,children 是dhtml的吧

从zhouyrt兄给出的https://developer.mozilla.org/En/DOM/Element.children上说:

"Introduced in Gecko 1.9.1
Applies to Firefox 3.5, SeaMonkey 2, and Thunderbird 3 and later"

看样子还是等ff3.5普及了再用比较好呵

相关推荐

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

    通过实际测试document、head、body等HTML元素,我们可以发现,针对这些元素使用children和childNodes获取的结果也基本没有差异。这可能是因为在标准的HTML结构中,这些元素周围通常不会存在多余的空白字符。 总结来...

    Js中parentNode,parentElement,childNodes,children之间的区别

    本文将详细解析`parentNode`、`parentElement`、`childNodes`和`children`之间的区别。 首先,`parentNode`和`parentElement`都是用于获取一个元素的父级节点。它们的主要区别在于兼容性。`parentNode`是W3C标准的...

    javascript在IE和Firefox中兼容性问题

    IE和Firefox在处理`parentElement`和`parent.children`上存在差异。IE支持`parentElement`属性直接获取父元素,而Firefox则需使用`parentNode`。同样,`parent.children`在IE中有效,但Firefox中应使用`parent....

    javascript兼容手册.doc

    10. **parentElement与parentNode,children与childNodes**: - FF不支持`parentElement`,应使用`parentNode`。 - `parentNode.childNodes`在FF和IE中的解释不同,FF的`childNodes`可能包含空白文本节点。可以...

    Javascript下IE与Firefox下的差异兼容写法总结

    Firefox则使用`parentNode`、`parentNode.childNodes`和`node.parentNode.removeChild(node)`。 至于鼠标坐标的特有方法,`screenX`是IE和Firefox都支持的,指的是鼠标在显示屏幕上的坐标。`clientX`是鼠标在页面...

    课题-js和jquery获取父级元素、子级元素、兄弟元素的方法.docx

    在网页开发中,JavaScript(简称...jQuery的方法不仅简化了代码,还提高了性能,因为它内部处理了浏览器差异,开发者无需关心兼容性问题。通过熟悉并熟练运用这些方法,可以更高效地操纵DOM,实现丰富的网页交互效果。

    js浏览器兼容手册OSOS.pdf

    10. `parentElement`和`children`问题:FF使用`parentNode`和`childNodes`,而IE中可能有`parentElement`和`children`。`childNodes`在不同浏览器中的处理方式不同,可能包含空白文本节点。建议使用`...

    WEB 浏览器兼容 推荐收藏

    10. **`parentElement`和`children`问题**:Firefox使用`parentNode`和`childNodes`,而IE中可能使用`parentElement`和`children`。`childNodes`在Firefox中包含空白文本节点,可以通过`getElementsByTagName()`规避...

    DOM基础.doc

    5. **选择和遍历**:DOM提供了一系列方法来查找和遍历文档结构,如`querySelector`和`querySelectorAll`用于选取符合CSS选择器的元素,`childNodes`和`children`属性用于访问元素的子节点。 6. **事件(Event)**:...

    浏览器兼容页面开发注意事项(javascript篇)_101028.pdf

    10. **FF中没有parentElement和parent.children**:Firefox不支持`parentElement`和`parent.children`,可以使用`parentNode`和`childNodes`代替。 11. **const问题**:IE8及更早版本不支持`const`关键字,如果要...

    浏览器兼容页面开发注意事项(javascript篇)_101028参考.pdf

    10. FF中没有`parentElement`和`parement.children`:Firefox使用`parentNode`和`childNodes`,而非IE的`parentElement`和`children`。在跨浏览器代码中,使用`parentNode`和`childNodes`更安全。 11. `const`问题...

    08-HTMLCollection-NodeList-区别.md

    HTMLCollection是由一些获取DOM元素的API返回的,如`document.getElementsByTagName()`或者`elem.children`。这些方法返回的集合是实时更新的,也就是说,如果DOM结构发生变化,HTMLCollection中的元素也会相应地...

    JS中出现的兼容性问题的总结.pdf

    在使用childNodes属性获取子节点时,不同浏览器的实现存在差异。IE6-8获取的只是元素节点,而高版本浏览器如Chrome和Firefox会同时获取元素节点和文本节点。为了兼容,我们可以使用nodeType属性进行判断。例如,...

    JavaScript获取HTML DOM节点元素的方法的总结

    在不同的浏览器环境中,需要注意兼容性问题,因为不同的浏览器可能对某些属性和方法的支持存在差异。在开发过程中,可以借助像jQuery这样的库来简化跨浏览器的DOM操作,提高代码的可读性和维护性。

    javascript浏览器兼容手册

    - **IE** 中使用 `node.parentNode.removeChild(node)` 移除节点时,需要注意 FF 中的 `children` 和 `childNodes` 的区别。 8. **常量声明** - **IE**: 不支持 `const` 关键字,需要使用 `var`。 9. **body ...

    JavaScript 浏览器兼容性总结及常用浏览器兼容性分析

    IE浏览器在解析DOM节点时,其`children`和`childNodes`属性不会把文本节点(例如换行和空白字符)计入子节点。然而,在Firefox浏览器中,`childNodes`会包括文本节点作为子节点。例如,考虑以下HTML代码片段: ```...

    浏览器兼容页面开发注意事项(javascript篇)_101028实用.pdf

    10. **FF中的parentElement和parent.children**:FF使用`element.parentNode`和`element.childNodes`,而IE有`element.parentElement`和`element.children`。 11. **const问题**:在旧版本的IE中不支持`const`...

    js在IE和fireFox的区别

    - **IE**:使用`parentElement`和`children`。 - **Firefox**:使用`parentNode`和`childNodes`。 - **统一解决方案**:可以使用`parentNode`和`childNodes`,或考虑使用`querySelectorAll`等更现代的方法。 4. ...

Global site tag (gtag.js) - Google Analytics