1. 获取 NodeList 对象
使用 querySelectorAll:
var nodeList = document.querySelectorAll('.myClass');
// nodeList 是一个 NodeList 对象
使用 childNodes:
var nodeList = document.body.childNodes;
// nodeList 是一个 NodeList 对象
2. NodeList 的特性
- 实时性: NodeList 通常是实时更新的,当文档结构发生变化时,它会自动更新,反映最新的文档状态。
- 不是数组: NodeList 不是真正的数组对象,虽然它类似于数组,但没有数组的所有方法。
3. 遍历 NodeList
虽然 NodeList 不是真正的数组,但你仍然可以通过索引和循环进行访问:
var nodeList = document.querySelectorAll('.myClass');
// 通过索引访问
var firstNode = nodeList[0];
// 使用循环遍历
for (var i = 0; i < nodeList.length; i++) {
var currentNode = nodeList[i];
// 对每个节点执行操作
}
4. 转换为数组
如果需要使用数组方法,可以将 NodeList 转换为数组:
var nodeList = document.querySelectorAll('.myClass');
var arrayFromNodeList = Array.from(nodeList);
// 或者使用扩展运算符
var arrayFromNodeList = [...nodeList];
5. 注意事项
- NodeList 是实时更新的,这可能会在某些情况下影响性能。如果你不需要实时更新,可以将其转换为静态数组。
var staticArray = Array.from(nodeList);
- 在一些浏览器环境中,NodeList 对象可能包含文本节点和注释节点。如果只想包含元素节点,可以通过过滤或使用 document.querySelectorAll 来实现。
var elementList = document.querySelectorAll('.myClass');
总体而言,NodeList 对象在处理文档中的一组节点时非常有用。了解其实时性和不是数组的特性将有助于更好地利用和操作节点集合。
转载请注明出处:http://www.pingtaimeng.com/article/detail/12826/JavaScript