Javascript 为什么没有定义getAttribute?
我有我正在运行的脚本。这表明getAttribute属性在第164行是未定义的。我不明白为什么。我尝试回溯各种函数调用以查找中断,但没有看到Javascript 为什么没有定义getAttribute?,javascript,properties,Javascript,Properties,我有我正在运行的脚本。这表明getAttribute属性在第164行是未定义的。我不明白为什么。我尝试回溯各种函数调用以查找中断,但没有看到 您的mouseleave事件侦听器将始终拥有唱片集查看歌曲项的事件.target.className,因为songRows被定义为文档。getElementsByClassName(“唱片集查看歌曲项”) 因此,在侦听器中调用getSongItem(event.target)时: songRows[i].addEventListener("mouselea
您的
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。不要只是发布代码的链接。我们正试图建立一个问题库,帮助不止一个人。当这种联系消失时,这个问题将变得毫无意义。