亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JS無法獲取正在播放的audio的src等屬性 / audio的duration為NaN

JS無法獲取正在播放的audio的src等屬性 / audio的duration為NaN

慕絲7291255 2018-10-24 09:46:59
打算設計一個播放器,其中一個函數控制點擊菜單某首歌曲即可播放,在該函數內調用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);
    }


查看完整回答
反對 回復 2018-10-24
  • 1 回答
  • 0 關注
  • 2569 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號