播放声音 X 次,相隔 X 秒.设置超时不起作用



当满足条件时,我想播放通知声音(短促的哔哔声(x次,中间有x时间。我写了以下脚本:

function repeat(times) {
  document.getElementById("alert").play();
  if (--times > 0){
    setTimeout(repeat(times), 3000);
    // also tried this, but didnt work either
    // setTimeout(document.getElementById("alert").play, 3000);
  }
}
repeat(3)

在 Safari 调试器中签入时,没有错误并且 setTimeout 被触发,但在第一声哔哔声之后,听不到其他声音。(音频文件的长度约为 1 秒(

有人可以解释为什么它不起作用吗?

尽量使用短音,因为如果在上一个声音结束之前播放声音,第二个声音将被静音。

<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<audio id="sound">
  <source src="alert.wav" type="audio/wav">
</audio>
<input type="text" id="times" value="5">
<button id="btn" type="button">Play Alert</button>
<script>
    $(document).ready(function () {
        var audio = new Audio("alert.wav");
        let times = 0;
        $("#btn").on("click", function() {
            times = parseInt(document.getElementById("times").value);
            playAudio();
        });
        playAudio = function() {
            audio.play()
            times --;
            if (times) setTimeout(playAudio, 333);
        }
    });
</script>

最新更新