如何通过ID获取元素?HTMLCollection实现及代码报错求助
解决通过ID获取虚拟DOM元素的报错问题
你遇到的报错是因为getElementById是document对象专属的方法,通过document.createElement('html')创建的<html>元素节点并不具备这个方法,所以调用时会抛出类型错误。
方法1:使用querySelector(最简便)
直接用querySelector代替,它支持在任意元素节点上调用,通过ID选择器#someID定位元素:
let dummyDOM = document.createElement('html'); dummyDOM.innerHTML = text; const targetElement = dummyDOM.querySelector("#someID");
方法2:借助HTMLCollection实现
如果你一定要用HTMLCollection来完成,可以通过获取所有元素的集合,再遍历筛选出ID匹配的元素:
let dummyDOM = document.createElement('html'); dummyDOM.innerHTML = text; // 获取所有元素的HTMLCollection const allElements = dummyDOM.getElementsByTagName('*'); let targetElement = null; // 遍历集合找匹配ID的元素 for (let elem of allElements) { if (elem.id === "someID") { targetElement = elem; break; } }
也可以先获取<body>或其他容器的子元素集合再遍历,原理一致。
内容的提问来源于stack exchange,提问作者Grant Curell
相关产品推荐
相关产品推荐

