账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JS无法获取正在播放的audio的src等属性 / audio的duration为NaN
    46
    0

    打算设计一个播放器,其中一个函数控制点击菜单某首歌曲即可播放,在该函数内调用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...

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 千面飞狐 普通会员 1楼

      在JavaScript中,无法直接获取audio的src属性或duration属性,因为它们是浏览器提供的API,而JS的运行环境是浏览器环境。如果你想要获取audio的src属性,你需要使用一个audio对象的play()方法。

      如果你想要获取audio的duration属性,你需要先创建一个audio对象,然后调用它的getDuration()方法。

      以下是一个例子:

      javascript var audio = new Audio(); audio.src = "path/to/audio.mp3"; audio.play(); var duration = audio.getDuration(); console.log(duration); // 输出audio的duration属性

      如果你的audio对象的duration属性为NaN,那么在获取它的src属性时也会返回NaN。这是因为audio的duration属性是一个JavaScript数字,而JS的getDuration()方法只接受字符串类型的属性。

      如果你想要获取audio的src属性,你可以使用以下的JavaScript代码:

      javascript var audio = new Audio(); audio.src = "path/to/audio.mp3"; console.log(audio.src); // 输出audio的src属性

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部