2017-02-17 83 views
0

喜試圖瞭解並解決運行下面的代碼full code here的Javascript控制檯錯誤添加classList.add時,陣列

for(var i = 0 ; i <= paragraphs.length ; i++){ 
    if(i === 0){ 
    continue 
    } 
    paragraphs[i].classList.add('hide') 
} 
的時候,我發現了控制檯錯誤

錯誤讀取

Cannot read property 'classList' of undefined 

我發現this在reddit上的解釋,但我不知道它是如何修復的?

提前感謝

+3

你可以從'1'開始保存if子句 –

+1

_In JavaScript arrays(and array-like對象)是零索引的:數組的第一個元素在索引0處,最後一個元素在索引處等於數組長度屬性的值減1._([ref。](https:// developer .mozilla.org/EN-US /文檔/網絡/的JavaScript /參考/ Global_Objects /陣列#Accessing_array_elements)) – hindmost

回答

2

你ar e從你的循環中取出你的數組。

這樣做:

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