Javascript 声音不';I don’我不能玩预期的次数

Javascript 声音不';I don’我不能玩预期的次数,javascript,Javascript,我尝试多次播放音效;首先,按下按钮触发,然后再播放两次,间隔为最后一次播放后两秒 我当前(相关)的HTML: 最初,我试图通过使用for循环来解决这个问题,并将其仅包含在一个函数中: function playRing_Delay() { setTimeout(function playRing() { var audio = document.getElementById("ring_audio"); for (i = 0; i < 4; i++)

我尝试多次播放音效;首先,按下按钮触发,然后再播放两次,间隔为最后一次播放后两秒

我当前(相关)的HTML:

最初,我试图通过使用for循环来解决这个问题,并将其仅包含在一个函数中:

function playRing_Delay() {
    setTimeout(function playRing() {
        var audio = document.getElementById("ring_audio");
        for (i = 0; i < 4; i++) {
            if i < 3 { //the first two times
                audio.play(); //plays audio as normal
            }
            else { //the last time it plays
                audio.play();
                setTimeout(function stopRing() {
                    audio.pause();
                }, 500) //stops audio after half a second
            }
        }
    }, 5000);
}
函数播放\u延迟(){
setTimeout(函数播放(){
var audio=document.getElementById(“环音频”);
对于(i=0;i<4;i++){
如果前两次我<3{//
audio.play();//正常播放音频
}
否则{//最后一次播放
音频播放();
setTimeout(函数stopRing(){
audio.pause();
},500)//半秒钟后停止音频
}
}
}, 5000);
}
不幸的是,这不起作用,所以我尝试将第一位重复三次,只是增加等待毫秒的数量,以便它们能够正确地连续出现;我不打算粘贴它,因为本质上我只是将playRing\u Stop()的内容放在playRing\u Delay()的内容中

此外,我注意到,当我改变最后一个环的等待时间(从9000ms>2000ms)时,它开始播放,然后是设置为5000ms(如预期的那样),而第二个环(7000ms)没有

有人能提供一个解决方案吗?或者至少向我解释一下为什么会这样


注意:在for-loop方法失败后,我故意在其他方法中忽略了第三个环的早期停止点。

发生这种情况是因为
#ring_audio
文件长3秒,而您试图在2秒后重播它。因此,当您向它发出第二个
play
命令时,它仍在播放

如果要在完成之前重新启动它(或等待整整3秒钟,然后在它上重新运行
play
),则应将其
currentTime
设置为0


非常感谢。你知道为什么它仍然是第二次而不是第三次吗?@paypercrane由于我在回答中提到的问题,跳过了第二次重复。我的阅读理解显然需要一些工作。再次感谢!
function playClick() {
    var audio = document.getElementById("click_audio");
    audio.currentTime = 0.3;
    audio.play();
}
function fade_title() {
    var titlescreen = document.getElementById("title_screen");
    titlescreen.style.display = "none";
}
function playRing_Delay() {
    setTimeout(function playRing() {
        var audio = document.getElementById("ring_audio");
        audio.play();
    }, 5000);
    setTimeout(function playRing() {
        var audio = document.getElementById("ring_audio");
        audio.play();
    }, 7000);
}
function playRing_Stop() {
    setTimeout (function playRing() {
        var audio = document.getElementById("ring_audio2");
        audio.play();
    }, 9000);
}
function playRing_Delay() {
    setTimeout(function playRing() {
        var audio = document.getElementById("ring_audio");
        for (i = 0; i < 4; i++) {
            if i < 3 { //the first two times
                audio.play(); //plays audio as normal
            }
            else { //the last time it plays
                audio.play();
                setTimeout(function stopRing() {
                    audio.pause();
                }, 500) //stops audio after half a second
            }
        }
    }, 5000);
}
function playRing_Delay() {
    setTimeout(function playRing() {
        var audio = document.getElementById("ring_audio");
        audio.play();
    }, 5000);
    setTimeout(function playRing() {
        var audio = document.getElementById("ring_audio");
        audio.currentTime = 0;
        audio.play();
    }, 7000);
}