【问题标题】:Javascript console error when adding classList.add to array将 classList.add 添加到数组时出现 Javascript 控制台错误
【发布时间】:2017-07-06 16:31:07
【问题描述】:
您好,尝试理解并修复我在运行以下代码时遇到的控制台错误 full code here
for(var i = 0 ; i <= paragraphs.length ; i++){
if( i === 0 ){
continue
}
paragraphs[i].classList.add('hide')
}
错误读取
Cannot read property 'classList' of undefined
我在 reddit 上找到了this 的解释,但我不确定它是如何修复的?
在此先感谢
【问题讨论】:
-
-
在 JavaScript 中,数组(和类似数组的对象)是零索引的:数组的第一个元素在索引 0 处,最后一个元素在索引处等于数组的长度属性减 1。 (ref.)
标签:
javascript
error-code
【解决方案1】:
你已经不在你的循环中了。
这样做:
for(var i = 0 ; i < paragraphs.length ; i++)
代替
for(var i = 0 ; i <= paragraphs.length ; i++)
您可以优化循环以直接从第二项开始(“i = 1 而不是“i =0”)
【解决方案2】:
您的循环超出了您必须解决的段落数:
1 -paragraphs.length-1
或
2 - i var paragraphs = document.getElementsByTagName('p'),
firstParagraph = paragraphs[0],
link = document.createElement('a');
link.innerHTML = 'Show more';
link.setAttribute('class' , 'link');
link.setAttribute('href' , '#');
firstParagraph.appendChild(link);
for(var i = 0 ; i <= paragraphs.length-1 ; i++){
if( i === 0 ){
continue
}
console.log("hellp",paragraphs[i]);
paragraphs[i].classList.add('hide')
}