首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >窗口浏览器外的计数器停止

窗口浏览器外的计数器停止
EN

Stack Overflow用户
提问于 2016-04-20 19:04:18
回答 1查看 55关注 0票数 0

我试图创建一个计数器,问题是,我试图使计数器运行,只有当用户在窗口,如果用户走出窗口或到另一个分隔符,计数器应该停止,直到他回来。

这是我的代码:

代码语言:javascript
复制
$(window).blur(function(){
console.log("Counter Should Stop");
});
$(window).focus(function(){
window.onload = function(){

(function(){
  var counter = 10;

  setInterval(function() {
    counter--;
    if (counter >= 0) {
      span = document.getElementById("count");
      span.innerHTML = counter;
    }
    // Display 'counter' wherever you want to display it.
    if (counter === 0) {
        alert('this is where it happens');
        clearInterval(counter);
    }

  }, 1000);

})();

}
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-20 19:23:52

您有一些范围问题,以及嵌套函数问题。为了提高可读性,并帮助您调试,我建议将其重构为每个事件的单独函数名。这也有助于提高可重用性。

这应该能做你想要的:

代码语言:javascript
复制
(function(){
  // your global variables
  var span = document.getElementById("count");
  var counter = 10;
  var timer;

  // your helpers
  var startTimer = function() {
    // do nothing if timer is already running
    if (timer) return;

    timer = setInterval(function() {
      counter--;
      if (counter >= 0) {
        span.innerHTML = counter;
      }
      // Display 'counter' wherever you want to display it.
      if (counter === 0) {
          alert('this is where it happens');
          stopTimer();
      }
    }, 1000);
  };

  var stopTimer = function() {
    clearInterval(timer);
    timer = null;
  };

  // your handlers
  var onBlur = function() {
    stopTimer();
  };

  var onFocus = function() {
    startTimer();
  };

  var onLoad = function() {
    startTimer();
  };


  // assign your handlers
  $(window).load(onLoad);
  $(window).blur(onBlur);
  $(window).focus(onFocus);

})();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36752906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档