Javascript element.getAttribute不是函数
我希望将“element”的属性放入变量中,并在控制台中获得消息“element.getAttribute不是函数” 我做错了什么 这是我的完整代码: 这个问题可能来自initAudio(prev)和initAudio(next),但我不确定应该在哪里查找Javascript element.getAttribute不是函数,javascript,Javascript,我希望将“element”的属性放入变量中,并在控制台中获得消息“element.getAttribute不是函数” 我做错了什么 这是我的完整代码: 这个问题可能来自initAudio(prev)和initAudio(next),但我不确定应该在哪里查找 当我单击“上一个”和“下一个”时,它将在第一个曲目处停止,因为它保留了上一个.active类(该类应仅在一个曲目上), 这可能是代码中的冲突 还认为代码中存在问题的部分是: let next=$('.player\u list\u tra
当我单击“上一个”和“下一个”时,它将在第一个曲目处停止,因为它保留了上一个.active类(该类应仅在一个曲目上), 这可能是代码中的冲突 还认为代码中存在问题的部分是:
let next=$('.player\u list\u track.active').next();
如果(next.length==0){
next=$('.player\uuuu list\uuuu track:first child');
}
//初始化音频
函数初始化音频(元素){
让song=element.getAttribute(“song”);
const theSong=document.querySelector(“.player\uuuu bottom\uuuu infos\uuuu song”);
theSong.textContent=歌曲标题;
让imgCover=element.getAttribute(“cover”);
让artistName=element.getAttribute(“艺术家”);
//创建音频对象
音频=新音频(“媒体/”+歌曲);
//信息
artist.textContent=艺人姓名;
song.textContent=歌曲标题;
//掩护
//setAttribute(“src”、“img/covers/”+imgCover);
//播放列表
track.classList.remove('active');
element.classList.add('active');
}
//先前的
prevButton.addEventListener('单击',()=>{
audio.pause();
让prev=$('.player\uuuu list\uuuu track.active').prev();
如果(上一个长度==0){
上一个=$('.player_uuuulist_uuutrack:last child');
}
初始音频(上一个);
音频播放();
歌曲持续时间();
});
//下一个
nextButton.addEventListener('单击',()=>{
audio.pause();
让下一步=$('.player\uuuu list\uuuu track.active')。下一步();
如果(next.length==0){
next=$('.player\uuuu list\uuuu track:first child');
}
初始化音频(下一个);
音频播放();
歌曲持续时间();
});
const prevButton=document.querySelector('.player\uuuuu bottom\uuuuu controls\uuuuuu buttons\uuuuu prev');
const nextButton=document.querySelector(“.player\uuuu bottom\uuu控件\uuu按钮\uuu next”);
const-artist=document.querySelector(“.player\uuuu-bottom\uuuu-infos\uuuu-artist”);
const theSong=document.querySelector(“.player\uuuu bottom\uuuu infos\uuuu song”);
const cover=document.querySelector(“.player\uuuuu bottom\uuuu infos\uuuu cover”)代码>
已褪色的
级别
庞贝城
放射性的
- despacito
动物
苦乐参半交响曲
您可以演示如何获取元素
示例(工作):
var元素=document.getElementsByTagName(“li”)[0].getAttribute(“类”);
示例(由于是数组而无法工作):
var元素=document.getElementsByTagName(“li”).getAttribute(“类”) 我想这个街区不行。。
您的下一个元素未定义。您的列表没有用于获取活动元素的类名。
您正在initAudio方法中添加活动元素,但其第一行由于元素为null而出错
// Init Audio
function initAudio(element) {
let song = **element**.getAttribute("song");
let next = $('.player__list__track.active').next();
if (next.length == 0) {
next = $('.player__list__track:first-child');
}
在initAudio(x)
中,x可能未定义。您需要提供一个实际重现问题的方法。您从不调用initAudio
,因此您描述的错误不会发生。cover.src=“img/covers/”+imgCover代码>顺便说一句,cover是什么和在哪里?cover是img标记,它应该从li“玩家列表跟踪”中获取属性cover。你是对的,cover没有定义(针对错误的类)让firstTrack=document.querySelector('.player列表跟踪')。firstChild;initAudio(firstTrack)代码>@VincentWings:请将其编辑到您的问题中。(另外,第一个子节点可能是文本节点;请尝试.firstElementChild
或document.querySelector(“.player\uu list\uu track*”)
。除非您只是试图获取第一个.player\uuuu list\uuu曲目
,这是文档中的内容。querySelector
已返回–在这种情况下完全删除。firstChild
)谢谢您的回答,抱歉。。。这是我的第一篇文章。是的,我确实不需要。firstChild,但告诉我element.getAttribute不是函数仍然存在问题。element.getAttribute应该获得第一首曲目的属性。@VincentWings:脚本什么时候运行?i、 e.整个脚本是什么?HTML中的
标记在哪里?@Ry脚本标记就在body标记的末尾之前。请查找我的完整代码:当我单击“上一个”和“下一个”时,它在第一个曲目处停止,因为它保留了.active类
var element = document.getElementsByTagName("li").getAttribute("class");
// Init Audio
function initAudio(element) {
let song = **element**.getAttribute("song");
let next = $('.player__list__track.active').next();
if (next.length == 0) {
next = $('.player__list__track:first-child');
}