5
获取子节点的最佳方法
我想知道,JavaScript提供了多种方法来从任何元素中获取第一个子元素,但是哪种方法最好?最好的意思是:在行为方面,大多数跨浏览器兼容,最快,最全面且可预测。我用作别名的方法/属性的列表: var elem = document.getElementById('container'); var child = elem.children[0]; var child = elem.firstElementChild; // == children[0] 这适用于两种情况: var child = elem.childNodes[0]; // or childNodes[1], see below 在表单或<div>迭代的情况下。如果我可能遇到文字元素: var child = elem.childNodes; // treat as NodeList var child = elem.firstChild; 据我所知,firstChild使用来自的NodeList childNodes,并firstElementChild使用children。我将此假设基于MDN参考: childNode是对元素节点的第一个子元素的引用,或者null如果不存在的话。 我猜想,就速度而言,差异(如果有的话)几乎为零,因为firstElementChild实际上是对的引用children[0],并且该children对象无论如何已经在内存中。 扔给我的是childNodes物体。我用它来查看表格元素中的表单。虽然children列出了所有表单元素,但childNodes似乎还包含HTML代码中的空格: console.log(elem.childNodes[0]); console.log(elem.firstChild); 两者均记录 <TextNode textContent="\n "> …