面试题答案
一键面试// 查找特定父元素
const parentElement = document.querySelector('#parent - id'); // 假设通过id查找父元素
// 使用getElementsByTagName获取所有子元素,相比querySelectorAll性能更好
const allChildren = parentElement.getElementsByTagName('*');
// 遍历所有子元素,查找符合特定data - attribute值的元素并修改样式
for (let i = 0; i < allChildren.length; i++) {
const child = allChildren[i];
if (child.dataset.someAttribute === '特定值') {
// 修改样式
child.style.color = 'red';
}
}
性能优化说明:
- 使用
getElementsByTagName
替代querySelectorAll
:getElementsByTagName
是一个实时的HTMLCollection,在查找元素时效率更高,因为它不会像querySelectorAll
那样构建一个静态的NodeList。querySelectorAll
需要遍历整个DOM树来构建匹配的节点列表,而getElementsByTagName
可以在遍历到符合条件的元素时就进行处理,不需要预先构建完整的列表。 - 直接遍历
getElementsByTagName
返回的集合:直接遍历getElementsByTagName
返回的HTMLCollection,避免了额外的数组转换操作。这样减少了内存开销和处理时间,提升了性能。