打算设计一个播放器,其中一个函数控制点击菜单某首歌曲即可播放,在该函数内调用music.play()后继续console.log(music.src)是可以正常显示src路径的。然而在另一个控制播放下一曲的函数中,不论输出src还是currentSrc都是显示未定义,甚至输出currentTime等相关属性都是显示为0.相关代码如下:function prevSong(msc){ //上一首歌
let s = msc.currentSrc; let tar; /*
返回当前播放的节点给tar,代码略
*/
msc.pause(); if(tar.previousSibling.nodeName == 'LI'){ let index = tar.previousSibling.innerHTML;
msc.src = 'src/music/'+index+'.mp3';
}else{ let chd = tar.parentNode.childNodes; let res = chd[chd.length-1];
msc.src = 'src/music/'+res.innerHTML+'.mp3'
} //msc.load();
msc.play();
}另外,如何正常获取音频长度duration?我照着网上各种解决方法,使用了onloadedmetadata甚至是promise,输出的都是NaN直接把demo给post上来吧:http://www.malakh.xyz/demo2/js:http://www.malakh.xyz/demo2/s...
1 回答
幕布斯6054654
TA贡献1876条经验 获得超7个赞
需要这样获取audio才行:
var player = $("#msc")[0];
如果直接获取$("#msc"),使用play属性确实可以直接播放,但是无法给这个audio设置src属性以及获取音频时常。
获取音频时常:
var duration = player.duration
如果你是动态获取的播放地址,在第一次加载音频的时候,可能无法立即获取时常,所以你需要设置一个定时器,每10毫秒检测一次duration
//当前歌曲总时长 function getTime() { setTimeout(function () { var duration = player.duration; if (isNaN(duration)) { getTime(); } }, 10); }
添加回答
举报
0/150
提交
取消