[英]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时,音频应再次播放,然后停止或暂停,等等。提前致谢。
我认为您正在尝试这样做。 存储在变量中的“最后声音”被复制,并且仅在更改后播放新声音。 不需要监听“结束”事件,因为每个更改只播放一次。
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”元素的change事件添加一个侦听器,它每10毫秒避免一次“ query”。 但是我没有足够的代码向您展示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.