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
Javascript 如何使用jQuery在无限循环中播放音频文件_Javascript_Jquery_Audio_Mp3 - Fatal编程技术网

Javascript 如何使用jQuery在无限循环中播放音频文件

Javascript 如何使用jQuery在无限循环中播放音频文件,javascript,jquery,audio,mp3,Javascript,Jquery,Audio,Mp3,现在我有一段代码(如下),它允许我点击按钮播放音频文件。但是,我希望文件在无限循环中播放,直到我单击“停止”按钮。 我怎样才能做到这一点 var audiotypes={ "mp3": "audio/mpeg", "mp4": "audio/mp4", "ogg": "audio/ogg", "wav": "audio/wav" } function ss_soundbits(sound){ var audio_element = document.cr

现在我有一段代码(如下),它允许我点击按钮播放音频文件。但是,我希望文件在无限循环中播放,直到我单击“停止”按钮。 我怎样才能做到这一点

var audiotypes={
    "mp3": "audio/mpeg",
    "mp4": "audio/mp4",
    "ogg": "audio/ogg",
    "wav": "audio/wav"
}

function ss_soundbits(sound){
    var audio_element = document.createElement('audio')
    if (audio_element.canPlayType){
        for (var i=0; i<arguments.length; i++){
            var source_element = document.createElement('source')
            source_element.setAttribute('src', arguments[i])
            if (arguments[i].match(/\.(\w+)$/i))
                source_element.setAttribute('type', audiotypes[RegExp.$1])
            audio_element.appendChild(source_element)
        }
        audio_element.load()
        audio_element.playclip=function(){
            audio_element.pause()
            audio_element.currentTime=0
            audio_element.play()
        }
        return audio_element
    }
}

var audio = ss_soundbits('audio/file.mp3');

var start_audio= function() {
   audio.playclip();
};
var音频类型={
“mp3”:“音频/mpeg”,
“mp4”:“音频/mp4”,
“ogg”:“音频/ogg”,
“wav”:“音频/wav”
}
功能ss_声音位(声音){
var audio_element=document.createElement('audio'))
if(音频元素.canPlayType){

对于(var i=0;i捕获音频元素上的
end
事件,然后使其再次播放

audio_element.addEventListener('ended', function() {
    this.currentTime = 0;
    this.play();
}, false);
这对你来说应该足够了

编辑

正如@A.Wolff所指出的,我做了一个疏忽,点击stop将触发ended事件。设置一个全局布尔标志将解决这个问题

var stopped = false;

audio_element.addEventListener('ended', function() {
    if(!stopped){
        this.currentTime = 0;
        this.play();
    }
}, false); 

var stop_button = document.getElementByID('stop');

stop.addEventListener('click', function(){
    stopped = true
    audio_element.stop();
});

抱歉我的评论-仅添加:如果不手动单击,audio_element.play()可能无法在移动浏览器上工作。

有一个布尔属性
loop
(而不是
loup
)…;)方法
stop()
也会触发
end
事件?@a.wolf如果你是对的,我在回答中已经解决了这个问题。