首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复setInterval

重复setInterval
EN

Stack Overflow用户
提问于 2016-10-05 09:11:34
回答 4查看 3.1K关注 0票数 0

我目前正在JavaScript中为HTML页面使用一个JavaScript函数。它有一个按钮,允许我在1秒间隔内开始从10到0的倒计时,每次我按下这个按钮,倒计时就应该被重置。然而,在第一个按钮按下后,下一个倒计时会严重地扰乱时间间隔。

代码语言:javascript
复制
var count;

function countdown() {
  count = 10;
  var repeat = setInterval(reduce, 1000);
}

function reduce() {
  if (count > 0) {
    document.getElementById('number').innerHTML = count;
    count--;
  } else {
    clearInterval(repeat);
  }
}
代码语言:javascript
复制
<html>
<head>
  <title>Page 4</title>
</head>
<body>
  <button style=" display: inline-block; " onclick="countdown()">Start Count Down</button>
  <div style=" display: inline-block;" id="number"></div>
</body>
</html>

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-10-05 09:16:01

在调用倒计时时,可以使用全局变量repeat和重置(如果设置)。

代码语言:javascript
复制
var count,
    repeat;

function countdown(){     
    count = 10;
    if (repeat) {
        clearInterval(repeat);
    }
    repeat = setInterval(reduce, 1000);     
}

function reduce() {
    if (count > 0) {
        document.getElementById('number').innerHTML = count;
        count--;
    } else {
        clearInterval(repeat);
    }
}
代码语言:javascript
复制
<button style=" display: inline-block; " onclick ="countdown()" >Start Count Down</button>
<div style="display: inline-block;" id="number"></div>

票数 0
EN

Stack Overflow用户

发布于 2016-10-05 09:15:08

您的问题是repeat变量,它只有在countdown中才能定义和访问。

您也可以将其设置为全局的,然后再次单击该按钮时必须清除以前的间隔。

代码语言:javascript
复制
var count, repeat;

function countdown() {
    clearInterval(repeat);
    count = 10;
    repeat = setInterval(reduce, 1000);
}

function reduce() {
    if (count > 0) {
        document.getElementById('number').innerHTML = count;
        count--;
    } else {
        clearInterval(repeat);
    }
}

FIDDLE

票数 0
EN

Stack Overflow用户

发布于 2016-10-05 09:15:11

把你的重复放在外面,这样函数减少就可以访问它了。

代码语言:javascript
复制
    var count;
    var repeat = null;
    function countdown(){

      count = 10;
      repeat = setInterval(reduce, 1000);


    }

    function reduce() {
      if(count > 0)
      {document.getElementById('number').innerHTML = count;
      count--;}
      else
      {clearInterval(repeat);}


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

https://stackoverflow.com/questions/39869857

复制
相关文章

相似问题

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