setInterval播放一次声音

时间:2017-06-29 13:58:44

标签: javascript setinterval

我目前有一些Javascript,如果滴答时间值低于1小时,则每秒检查一次(使用设置间隔),如果为true,则将类“warning”附加到html元素。

当时间值低于1小时时,我还希望有一个声音播放。

我目前有以下内容:

var snd = new Audio("sound.wav");
var x = setInterval(function() {
    if (distance < 3600000 ) { 
    timer.className = "warning" ;
    playSound();
    }
    },1000);

function playSound() {
    snd.play;
    }

我遇到的问题是,一旦时间值低于1小时(3600000毫秒),它就会每秒播放一次声音,因为它是我的setinterval的一部分,它会检查每秒的时间。如何让它只播放一次?

1 个答案:

答案 0 :(得分:0)

要么停止间隔:

var snd = new Audio("sound.wav");
var x = setInterval(function() {
   if (distance < 3600000 ) { 
    timer.className = "warning" ;
    snd.play()
    clearInterval(x);
   }
 },1000);

或切换警告布尔值:

var warned=false;
setInterval(function(){
  if(distance < 3600000 && !warned){
    timer.className="warning";
    snd.play();
    warned=true;
  }
},1000);

或(如果距离是常规倒计时),您可以改为使用setTimeout:

setTimeout(function(){
 timer.className="warning";
 snd.play();
},Math.max(distance-3600000,0));