【问题标题】: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 的解释,但我不确定它是如何修复的?

在此先感谢

【问题讨论】:

  • 你可以从1开始保存if子句。
  • 在 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')
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 2018-07-28
      相关资源
      最近更新 更多