Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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
使用jquery和HTML5音频标签切换音频源_Jquery_Html_Audio_Html5 Audio - Fatal编程技术网

使用jquery和HTML5音频标签切换音频源

使用jquery和HTML5音频标签切换音频源,jquery,html,audio,html5-audio,Jquery,Html,Audio,Html5 Audio,我只找到了另一个解决方案,但它不完整,所以我需要这里的帮助 我已设置音频: <audio id="player" controls="controls"> <source id="ogg_src" src="lib/audio/barger01.ogg" type="audio/ogg" /> <source id="mp3_src" src="lib/audio/barger01.mp3" type="audio/mp3"

我只找到了另一个解决方案,但它不完整,所以我需要这里的帮助

我已设置音频:

<audio id="player" controls="controls">
          <source id="ogg_src" src="lib/audio/barger01.ogg" type="audio/ogg" />
          <source id="mp3_src" src="lib/audio/barger01.mp3" type="audio/mp3" />
          Your browser does not support the audio element.
    </audio>
我找到了这个函数,但我没有正确使用它

 function change_track(sourceUrl) {

        audio.empty();
        $("#ogg_src").attr("src", sourceUrl).appendTo(audio);
        /****************/
        audio[0].pause();
        audio[0].load();//suspends and restores all audio element
        /****************/
    }

audio = $("<audio>").attr("id", "player")
                        .attr("preload", "auto");
函数更改\u跟踪(sourceUrl){
audio.empty();
$(“ogg#u src”).attr(“src”,sourceUrl).appendTo(音频);
/****************/
音频[0]。暂停();
音频[0]。加载();//挂起并恢复所有音频元素
/****************/
}
音频=$(“”).属性(“id”,“播放器”)
.attr(“预加载”、“自动”);

您的更改功能应如下所示:

function change(sourceUrl) {
    var audio = $("#player");      
    $("#ogg_src").attr("src", sourceUrl);
    /****************/
    audio[0].pause();
    audio[0].load();//suspends and restores all audio element

    //audio[0].play(); changed based on Sprachprofi's comment below
    audio[0].oncanplaythrough = audio[0].play();
    /****************/
}

问题是audio.empty()和audio var。您试图附加一个空的音频标记,但没有将音频标记写回浏览器。

您可能还想重命名该函数,因为“change”已经是jQuery中的一个函数。

您的问题是什么?当你尝试切换时会发生什么?你有错误吗?带有
函数change()
的代码是直接复制和粘贴的,还是仅仅是您提取的代码片段?我发现了change函数,但它不起作用。它现在抛出errorPost,然后抛出错误。如果人们不知道怎么回事,你希望他们如何帮助你?谢谢你的帮助。这件事澄清了我所做的一切,起到了很好的作用。我希望我的赏金判给正确。解决了我的问题。似乎必须使用load()方法,否则HTML播放器实际上不会加载声音,即使DOM已更新。谢谢还有,为什么不使用音频[1]或仅使用音频?我希望我知道足够多的javascript,知道一种自己得到答案的方法。我会在音频上进行打印。请注意,我在这段代码中遇到了问题,因为调用play()时音频通常尚未完全加载,然后它会忽略play()指令。所以我把它改为audio[0]。oncanplaythrough=audio[0]。play()
 function change_track(sourceUrl) {

        audio.empty();
        $("#ogg_src").attr("src", sourceUrl).appendTo(audio);
        /****************/
        audio[0].pause();
        audio[0].load();//suspends and restores all audio element
        /****************/
    }

audio = $("<audio>").attr("id", "player")
                        .attr("preload", "auto");
function change(sourceUrl) {
    var audio = $("#player");      
    $("#ogg_src").attr("src", sourceUrl);
    /****************/
    audio[0].pause();
    audio[0].load();//suspends and restores all audio element

    //audio[0].play(); changed based on Sprachprofi's comment below
    audio[0].oncanplaythrough = audio[0].play();
    /****************/
}