TypeError: element.forEach is not a function
TypeError: element.forEach is not a function
我想做一个 Chrome 扩展,用我选择的词替换词 'Corona Virus'。在我的 script.js 中,我使用了一个递归函数来检查是否有任何子节点。 `
replaceText(document.body)
function replaceText(element){
if(element.hasChildNodes()){
element.forEach(replaceText);
} else if(element.nodeType === Text.TEXT_NODE) {
element.textContent = element.textContent.replace(/coronavirus/gi,
'Blehh')
}
}`
在我的控制台中,我收到一条错误消息,提示 Uncaught TypeError: element.hasChildNodes.forEach is not a function
和 Uncaught TypeError: Cannot read property 'forEach' of undefined
。发生此错误的任何原因?
元素没有 forEach
方法。 (它们所具有的 hasChildNodes
函数也没有。)它们不是数组或 NodeList
s.
在现代浏览器上,element.childNodes
有 forEach
,因为它是 NodeList
,几年前他们有 forEach
(和可迭代性),所以:
element.childNodes.forEach(replaceText);
在尚未添加的旧浏览器上,您可以使用 Array.from
获取真正的数组,然后使用 forEach
:
Array.from(element.childNodes).forEach(replaceText);
或者您可以在 NodeList
、.
上进行 polyfill
我想做一个 Chrome 扩展,用我选择的词替换词 'Corona Virus'。在我的 script.js 中,我使用了一个递归函数来检查是否有任何子节点。 `
replaceText(document.body)
function replaceText(element){
if(element.hasChildNodes()){
element.forEach(replaceText);
} else if(element.nodeType === Text.TEXT_NODE) {
element.textContent = element.textContent.replace(/coronavirus/gi,
'Blehh')
}
}`
在我的控制台中,我收到一条错误消息,提示 Uncaught TypeError: element.hasChildNodes.forEach is not a function
和 Uncaught TypeError: Cannot read property 'forEach' of undefined
。发生此错误的任何原因?
元素没有 forEach
方法。 (它们所具有的 hasChildNodes
函数也没有。)它们不是数组或 NodeList
s.
在现代浏览器上,element.childNodes
有 forEach
,因为它是 NodeList
,几年前他们有 forEach
(和可迭代性),所以:
element.childNodes.forEach(replaceText);
在尚未添加的旧浏览器上,您可以使用 Array.from
获取真正的数组,然后使用 forEach
:
Array.from(element.childNodes).forEach(replaceText);
或者您可以在 NodeList
、