`
zhangziyueup
  • 浏览: 1182166 次
文章分类
社区版块
存档分类
最新评论

childNodes.length与children.length的区别

 
阅读更多


childNodes.length
children.length的值常不一样。
因为childNodes包含的不仅仅只有html节点,所有属性文本等都包含在childNodes里面,你可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才使元素节点,2是属性节点,3是文本节点。而children.length只计算元素节点的数量。
包括进行节点长度的计算,节点的移动时都要注意这一点。
要获得一个元素的文本,比如要获得一个P节点的文本,有的人喜欢使用innerHTML,更改也是一样,其实这不太好,因为使用innerHTML浏览器会认为你要插入的东西是一段标签文本,而你只想插入一段纯文本,这就导致浏览器试图去解析你的那段纯文本,这会造成不必要的资源浪费。所以建议使用element.firstChild.nodeValue,为什么是firstChild呢?因为childNodes[0]就是文本节点,不信你可以看看它的nodeType


分享到:
评论

相关推荐

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

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

    JS操作xml对象转换为Json对象示例

    x < xml.childNodes[i].childNodes.length; x++) { var element = xml.childNodes[i].childNodes[x]; var child = {}; // 获取并设置子节点的属性 child.attribute1 = element.getAttribute("attribute1"); ...

    Javascript遍历Html Table示例(包括内容和属性值)

    j < t.childNodes[i].childNodes.length; j++) { alert(t.childNodes[i].childNodes[j].innerText); } } } ``` 在这个例子中,`getElementById("tb")`用于获取id为"tb"的表格元素。`childNodes`属性返回一个包含...

    Select精美下拉框(漂亮)

    while (SS_VAR.DivDummy.children.length > 0) { SS_VAR.DivDummy.removeChild(SS_VAR.DivDummy.children(0)); } return oEl; } function SS_blurExcept (except) { SS_cancelEvent(window.event); except ...

    读Javascript高性能编程重点笔记

    children //childNodes childElementCount //childNodes.length firstElementChild //firstChild lastEelmentChild //lastChild nextElementSibling //nextSibling previousElementSibling //previousSibl

    使用JS操作页面表格,元素的一些技巧

    var ln = node.childNodes.length; var arr = []; for (var z = 0; z ; z++) { if (node.childNodes[z].nodeName == tagName.toUpperCase()) { // 确保大小写一致 arr.push(node.childNodes[z]); } } return...

    php实现jQuery扩展函数

    就是contains这个函数,书上介绍说这个函数是按照元素的内容来来筛选选择的... var childrenNodes = element.childNodes; if (childrenNodes.length == 0) { if (element.nodeValue != null) { if (pattern.exec(ele

    基于Vue制作组织架构树组件

    if (props.data.children && props.data.children.length) { childNodes.push(renderChildren(h, props.data.children, context)) } return h('div', { domProps: { className: 'org-tree-node' } }, childNodes...

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

    i < elem_child.length; i++) { if (elem_child[i].nodeName == "#text" && !/\S/.test(elem_child[i].nodeValue)) { elem.removeChild(elem_child[i]); } } } ``` 使用这个函数后,我们可以通过以下方式获取...

    网易云课堂之DOM编程艺术(原创带心得)

    var iNodes = element.childNodes; var result = new Array; for (var i = 0; i < iNodes.length; i++) { if (iNodes[i].nodeType == 1) // 判断是否为元素节点 result.push(iNodes[i]); } return result; }...

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

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

    js 数据存储和DOM编程

    3. 使用更高效的DOM API,比如`children`代替`childNodes`,`childElementCount`代替`childNodes.length`,以及`querySelectorAll`代替`getElementByTagName`等。 4. 注意重绘和重排的影响。重排(reflow)和重绘...

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

    10. **在FF中没有parentElement parement.children**:Firefox使用`parentNode`和`childNodes`属性,而IE提供了`parentElement`和`children`。在编写兼容代码时,需要同时处理这两种情况。 11. **const问题**:在旧...

    JS中使用DOM来控制HTML元素.docx

    5. **childNodes**和**children**: childNodes返回一个包含元素所有子节点的NodeList,包括文本节点和注释节点。children属性则只包含元素的子元素,不包括文本节点。在removeNode()函数中,使用childNodes[1]获取到...

    js中将HTMLCollection/NodeList/伪数组转换成数组的代码

    2,通过document.forms,Form.elements,Select.options,document.getElementsByName() ,document.getElementsByTagName() ,childNodes/children 等方式获取的集合(HTMLCollection,NodeList)等。 3,特殊写法...

    将HTMLCollection/NodeList/伪数组转换成数组的实现方法

    2,通过document.forms,Form.elements,Select.options,document.getElementsByName() ,document.getElementsByTagName() ,childNodes/children 等方式获取的集合(HTMLCollection,NodeList)等。 3,特殊写法...

    Firefox浏览器兼容JS脚本供参考

    IE中,元素的子节点可以通过`children`属性获取,这是一个HTMLCollection,只包含元素节点。Firefox中,`childNodes`属性包含所有节点(包括文本节点)。如果只想获取元素节点,需要遍历`childNodes`并检查每个节点...

    使用JS获取页面上的所有标签

    i < children.length; i++) { fds(children[i]); } } // 从文档的根节点开始调用fds函数 fds(document); // 打印统计结果 console.log(map); ``` 这段代码首先定义了一个空的map对象,然后定义了名为fds的递归...

Global site tag (gtag.js) - Google Analytics