无法为NodeList中多元素设置textContent?TypeError报错求助
问题原因及解决办法
错误根源在于你用了for...in遍历querySelectorAll返回的NodeList对象。for...in会遍历对象的所有可枚举属性,除了DOM元素,它还会把NodeList自带的length、item这类属性也遍历进去。当循环到i = 'length'时,copyright[i]就是数字2(你页面里正好有2个目标元素),这显然不是DOM对象,自然没法赋值textContent。
下面是几种正确的写法:
方法1:用for...of遍历(推荐,简洁直观)
const copyright = document.querySelectorAll('.copyright') for (const elem of copyright) { elem.textContent = new Date().getFullYear() }
方法2:传统for循环(兼容性好,适合旧环境)
const copyright = document.querySelectorAll('.copyright') for (let i = 0; i < copyright.length; i++) { copyright[i].textContent = new Date().getFullYear() }
方法3:NodeList自带的forEach方法(最简洁)
document.querySelectorAll('.copyright').forEach(elem => { elem.textContent = new Date().getFullYear() })
不管用哪种方法,都能确保只遍历到目标DOM元素,不会再出现类型错误。
内容的提问来源于stack exchange,提问作者AskingStupidQuestions
相关产品推荐
相关产品推荐

