2017-07-26 70 views
-1

我有這個腳本,我正在運行。這表明getAttribute屬性在164行是未定義的。我不明白爲什麼。我試着回溯各種函數調用來尋找突破,但我沒有看到它爲什麼getAttribute沒有定義?

Look for Album.js file

+0

你可以嘗試'console.log(songItem)'在第163行和164行之間,並告訴我你是否顯示錯誤 – Ivan

+0

@Ivan Seconded。最合理的解釋是'songItem'是'undefined'或錯誤的類型,比如'false'。 –

+0

您正在查看此屬性的控件是否包含該屬性。檢查html源代碼。 – Amit

回答

0

mouseleave事件偵聽器總是要擁有album-view-song-itemevent.target.className因爲songRows被定義爲document.getElementsByClassName("album-view-song-item");

因此,當getSongItem(event.target)被聽者內調用:

songRows[i].addEventListener("mouseleave", function(event) { 
    var songItem = getSongItem(event.target); 
    var songItemNumber = songItem.getAttribute("data-song-number"); 

    if (songItemNumber !== currentlyPlayingSong){ 
     songItem.innerHTML = songItemNumber; 
    } 
}); 

Ť他element.classNamealbum-view-song-item。當這傳遞到你的功能:

var getSongItem = function(element){ 
    switch(element.className){ 
     case "album-song-button": 
     case "ion-play": 
     case "ion-pause": 
      return findParentByClassName(element, "song-item-number"); 
     case "song-item-title": 
     case "song-item-duration": 
      return findParentByClassName(element, "album-view-song-item").querySelector(".song-item-number"); 
     case "song-item-number": 
      return element; 
     default: 
      return; 
    } 
}; 

這一直落入default情況,它返回undefined。調用getAttribute未定義,如你所見,給你錯誤Cannot read property 'getAttribute' of undefined

相關問題