-1
我有这个脚本,我正在运行。这表明getAttribute属性在164行是未定义的。我不明白为什么。我试着回溯各种函数调用来寻找突破,但我没有看到它为什么getAttribute没有定义?
我有这个脚本,我正在运行。这表明getAttribute属性在164行是未定义的。我不明白为什么。我试着回溯各种函数调用来寻找突破,但我没有看到它为什么getAttribute没有定义?
你mouseleave
事件侦听器总是要拥有album-view-song-item
的event.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.className
是album-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
你可以尝试'console.log(songItem)'在第163行和164行之间,并告诉我你是否显示错误 – Ivan
@Ivan Seconded。最合理的解释是'songItem'是'undefined'或错误的类型,比如'false'。 –
您正在查看此属性的控件是否包含该属性。检查html源代码。 – Amit