2017-07-26 74 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

相关问题