childNodes.length与children.length的值常不一样。
因为childNodes包含的不仅仅只有html节点,所有属性,文本等都包含在childNodes里面,你可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才使元素节点,2是属性节点,3是文本节点。而children.length只计算元素节点的数量。
包括进行节点长度的计算,节点的移动时都要注意这一点。
要获得一个元素的文本,比如要获得一个P节点的文本,有的人喜欢使用innerHTML,更改也是一样,其实这不太好,因为使用innerHTML浏览器会认为你要插入的东西是一段标签文本,而你只想插入一段纯文本,这就导致浏览器试图去解析你的那段纯文本,这会造成不必要的资源浪费。所以建议使用element.firstChild.nodeValue,为什么是firstChild呢?因为childNodes[0]就是文本节点,不信你可以看看它的nodeType。
分享到:
相关推荐
本文将详细解析`parentNode`、`parentElement`、`childNodes`和`children`之间的区别。 首先,`parentNode`和`parentElement`都是用于获取一个元素的父级节点。它们的主要区别在于兼容性。`parentNode`是W3C标准的...
x < xml.childNodes[i].childNodes.length; x++) { var element = xml.childNodes[i].childNodes[x]; var child = {}; // 获取并设置子节点的属性 child.attribute1 = element.getAttribute("attribute1"); ...
j < t.childNodes[i].childNodes.length; j++) { alert(t.childNodes[i].childNodes[j].innerText); } } } ``` 在这个例子中,`getElementById("tb")`用于获取id为"tb"的表格元素。`childNodes`属性返回一个包含...
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 ...
children //childNodes childElementCount //childNodes.length firstElementChild //firstChild lastEelmentChild //lastChild nextElementSibling //nextSibling previousElementSibling //previousSibl
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...
就是contains这个函数,书上介绍说这个函数是按照元素的内容来来筛选选择的... var childrenNodes = element.childNodes; if (childrenNodes.length == 0) { if (element.nodeValue != null) { if (pattern.exec(ele
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...
i < elem_child.length; i++) { if (elem_child[i].nodeName == "#text" && !/\S/.test(elem_child[i].nodeValue)) { elem.removeChild(elem_child[i]); } } } ``` 使用这个函数后,我们可以通过以下方式获取...
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; }...
10. **FF中的parentElement和parent.children**:FF使用`element.parentNode`和`element.childNodes`,而IE有`element.parentElement`和`element.children`。 11. **const问题**:在旧版本的IE中不支持`const`...
3. 使用更高效的DOM API,比如`children`代替`childNodes`,`childElementCount`代替`childNodes.length`,以及`querySelectorAll`代替`getElementByTagName`等。 4. 注意重绘和重排的影响。重排(reflow)和重绘...
10. **在FF中没有parentElement parement.children**:Firefox使用`parentNode`和`childNodes`属性,而IE提供了`parentElement`和`children`。在编写兼容代码时,需要同时处理这两种情况。 11. **const问题**:在旧...
5. **childNodes**和**children**: childNodes返回一个包含元素所有子节点的NodeList,包括文本节点和注释节点。children属性则只包含元素的子元素,不包括文本节点。在removeNode()函数中,使用childNodes[1]获取到...
2,通过document.forms,Form.elements,Select.options,document.getElementsByName() ,document.getElementsByTagName() ,childNodes/children 等方式获取的集合(HTMLCollection,NodeList)等。 3,特殊写法...
2,通过document.forms,Form.elements,Select.options,document.getElementsByName() ,document.getElementsByTagName() ,childNodes/children 等方式获取的集合(HTMLCollection,NodeList)等。 3,特殊写法...
IE中,元素的子节点可以通过`children`属性获取,这是一个HTMLCollection,只包含元素节点。Firefox中,`childNodes`属性包含所有节点(包括文本节点)。如果只想获取元素节点,需要遍历`childNodes`并检查每个节点...
i < children.length; i++) { fds(children[i]); } } // 从文档的根节点开始调用fds函数 fds(document); // 打印统计结果 console.log(map); ``` 这段代码首先定义了一个空的map对象,然后定义了名为fds的递归...