Javascript 为什么没有定义getAttribute?

Javascript 为什么没有定义getAttribute?,javascript,properties,Javascript,Properties,我有我正在运行的脚本。这表明getAttribute属性在第164行是未定义的。我不明白为什么。我尝试回溯各种函数调用以查找中断,但没有看到 您的mouseleave事件侦听器将始终拥有唱片集查看歌曲项的事件.target.className,因为songRows被定义为文档。getElementsByClassName(“唱片集查看歌曲项”) 因此,在侦听器中调用getSongItem(event.target)时: songRows[i].addEventListener("mouselea

我有我正在运行的脚本。这表明getAttribute属性在第164行是未定义的。我不明白为什么。我尝试回溯各种函数调用以查找中断,但没有看到


您的
mouseleave
事件侦听器将始终拥有
唱片集查看歌曲项的
事件.target.className
,因为
songRows
被定义为
文档。getElementsByClassName(“唱片集查看歌曲项”)

因此,在侦听器中调用
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;
    }
});
元素.className
唱片集查看歌曲项
。将其传递到函数中时:

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。如您所见,在undefined上调用
getAttribute
会导致错误
无法读取undefined的属性“getAttribute”

您可以尝试在第163行和第164行之间调用
console.log(songItem)
并告诉我是否有错误吗displayed@Ivan附议。最符合逻辑的解释是
songItem
未定义的
或类型错误,如
false
。查看此属性的控件是否包含该属性。签入html源代码。似乎
getSongItem()
并不总是返回值,请查看第77行。因此,我的赌注是
songItem
未定义请在问题本身中包含a。不要只是发布代码的链接。我们正试图建立一个问题库,帮助不止一个人。当这种联系消失时,这个问题将变得毫无意义。