打算设计一个播放器,其中一个函数控制点击菜单某首歌曲即可播放,在该函数内调用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...
需要这样获取audio才行:
如果直接获取$("#msc"),使用play属性确实可以直接播放,但是无法给这个audio设置src属性以及获取音频时常。
获取音频时常:
如果你是动态获取的播放地址,在第一次加载音频的时候,可能无法立即获取时常,所以你需要设置一个定时器,每10毫秒检测一次duration