Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript element.getAttribute不是函数_Javascript - Fatal编程技术网

Javascript element.getAttribute不是函数

Javascript element.getAttribute不是函数,javascript,Javascript,我希望将“element”的属性放入变量中,并在控制台中获得消息“element.getAttribute不是函数” 我做错了什么 这是我的完整代码: 这个问题可能来自initAudio(prev)和initAudio(next),但我不确定应该在哪里查找 当我单击“上一个”和“下一个”时,它将在第一个曲目处停止,因为它保留了上一个.active类(该类应仅在一个曲目上), 这可能是代码中的冲突 还认为代码中存在问题的部分是: let next=$('.player\u list\u tra

我希望将“element”的属性放入变量中,并在控制台中获得消息“element.getAttribute不是函数”

我做错了什么

这是我的完整代码:

这个问题可能来自initAudio(prev)和initAudio(next),但我不确定应该在哪里查找


当我单击“上一个”和“下一个”时,它将在第一个曲目处停止,因为它保留了上一个.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');
  }