将classList.add添加到数组时出现Javascript控制台错误

时间:2017-02-17 08:32:04

标签: javascript error-code

您正在尝试了解并修复运行以下代码时遇到的控制台错误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解释,但我不确定它是如何修复的?

非常感谢提前

2 个答案:

答案 0 :(得分:2)

您的循环超出了要解决的段落数量,您必须:

1 - paragraphs.length-1

2 - i&lt; paragraphs.length

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')
        }

答案 1 :(得分:2)

你的循环中没有数组。

这样做:

for(var i = 0 ; i < paragraphs.length ; i++)

而不是

for(var i = 0 ; i <= paragraphs.length ; i++)

您可以优化循环直接从第二项开始(“ i = 1 而不是” i = 0 “)