Javascript:使用clearInterval停止setInterval

时间:2018-07-21 08:46:03

标签: javascript mapbox

我在这里(至少6次)多次问过这个问题,答案范围从不正确使用变量到不正确的范围。但是,我仍然无法获得clearInterval来停止计时器。

我将在下面发布完整的代码-但我想做一些非常简单的事情。我只是想让代码刷新一个图像(在mapbox中),直到选择了另一个图像。另一个图像将加载,但计时器不会停止,因此它将继续刷新旧图像。

  1. 我设置了一个名为“ refreshtimerA”的全局变量来保存setInterval。

  2. 在addKEWX_REFLECTIVITY_toA()中,此函数运行计时器,并使用称为refreshKEWXL2REFLECTIVITY_A()的嵌套函数刷新该窗口中的图像(这是天气图)。这行得通。

  3. 当用户激活功能addGOES_16_toA()时,它应该(如我所添加的)激活clearInterval(refreshtimerA);但这并不能阻止它。

我尝试了很多变化并在这里进行了筛选,但找不到有效的答案。我希望解决这个问题,因为我的整个项目都完全停留在应该简单的事情上。我的代码:

edit:链接到保管箱完整的html / js示例:https://www.dropbox.com/s/11y2i859csj3o6k/stackoverflow.zip?dl=0

impl<T, B> IntoBox<B> for T
where
    Box<T>: Into<Box<B>>,
{
    fn into_box(self) -> Box<B> {
        Box::new(self).into()
    }
}

impl<T, B: ?Sized> IntoBox<B> for T
where
    B: std::marker::Unsize<T>
{
    fn into_box(self) -> Box<B> {
        Box::new(self)
    }
}

2 个答案:

答案 0 :(得分:1)

在替换$this->form_validation->set_rules('term_id[]', 'Term', 'trim|required'); 的值之前,您必须确保调用function combineElements(element1, element2) { Object.getOwnPropertyNames(element1).forEach(function(k1) { if (element2[k1]) { element1[k1] = element1[k1] + " " + element2[k1]; } }); } ,例如:

clearInterval

答案 1 :(得分:1)

希望该示例可以帮助您解决问题

var t; // timer id

var buttonStart = document.querySelector("#start");
var buttonStop = document.querySelector("#stop");

var timerDiv = document.querySelector("#timer");

buttonStart.onclick = function(){
  timerDiv.innerText = "Wait 3 seconds...";
  
	t = setTimeout(function(){
  	timerDiv.innerText = "OK";
    t = null;
  }, 3000);
  
}

buttonStop.onclick = function(){

  if(t){
    clearTimeout(t);
    t = null;
    timerDiv.innerText = "Stoped";
  } else {
    timerDiv.innerText = "It no timer";
  }

}
<div id="timer">unset</div>

<div>
  <input type="button" id="start" value="start">
</div>

<div>
  <input type="button" id="stop" value="stop">
</div>