设置间隔播放音频只循环音频一次?

Set interval play audio only loop audio once?

我有一个设定的间隔,在设定的间隔内我有一个声音需要播放一次而且只播放一次但问题是声音一直在循环并且不会停止没有人知道我在做什么'我在这里做错了是我试过的: html:

<audio id="swoosh">
  <source src="/resources/music/swoosh.mp3" type="audio/mpeg">
</audio>

js:

    var swoosh = document.getElementById("swoosh");

    setInterval(function () {
        if ($('.c:contains("01")').length > 0) {
            $(".links #abt").attr("href", "about.html");

            swoosh.addEventListener('ended', function () {
                swoosh.pause();
                swoosh.currentTime = 0;
                swoosh.loop = false;
            }, false);
            swoosh.play();

            //
            if ($('.c:contains("02")').length > 0) {
                $(".links #work").attr("href", "work.html");

                swoosh.addEventListener('ended', function () {
                    swoosh.pause();
                    swoosh.currentTime = 0;
                    swoosh.loop = false;
                }, false);
                swoosh.play();
            }
        }
    }, 10);

目的是当class="c"的内容改变时播放声音所以如果内容是01音频应该播放一次然后暂停或停止然后当它变成02它应该再次播放然后停止或暂停等 提前致谢。

我认为您正在尝试这样做。存储在一个变量中,"last sound" 被复制并且只在它改变时播放一个新的。 "ended" 事件上的侦听器是不必要的,因为每次更改只播放一次。

var swoosh = document.getElementById("swoosh");
var lastPlay = "00";

setInterval(function () {
    var cValue = $('.c').text();
    if (lastPlay != "01" && cValue.indexOf("01") >= 0) {
        $(".links #abt").attr("href", "about.html");
        swoosh.play();
        lastPlay = "01";
    }
    else if (lastPlay != "02" && cValue.indexOf("02") >= 0) {
        $(".links #work").attr("href", "work.html");
        swoosh.play();
        lastPlay = "02";
    }
}, 10);

其他更好的方法是为“.c”元素的更改事件添加一个侦听器,它避免了每 10 毫秒 "query"。但是我没有足够的代码给你看。