setInterval does not keeep going



当调用ctdwnDecCall()时,它显示8,但只有一次,它应该每秒显示一次,这个脚本在页面的头部

    var ctdwnDecInt;
    function ctdwnDecCall()
        {
            ctdwnDecInt=setInterval(ctdwnDec(),1000);
        }
        function ctdwnDec()
        {
            document.write("8");
            
        }

您正在调用 ctdwnDec 函数,而不是按间隔进行设置。您需要删除()

var ctdwnDecInt;
function ctdwnDecCall() {
    ctdwnDecInt=setInterval(ctdwnDec ,1000);
              // no parens in there ^
}
function ctdwnDec() {
    document.write("8");
}

我可能会写这样的东西(JSBIN DEMO)

var Timer = function Timer(elem, seconds) {
  elem = elem;
  seconds = seconds || 10;
  var interval = null;
  function render() {
    elem.innerHTML = seconds;
  }
  function start() {
    if (!interval) {
      interval = setInterval(update, 1000);
    }
  }
  function update() {
    seconds = seconds - 1;
    render();
    if (seconds === 0) {
      stop();
    }
  }
  function stop() {
    clearInterval(interval);
  }
  this.start = start;
  this.stop = stop;
}

使用现在变得简单模式

.HTML

在这里,我们设置了几个计时器并使用类timer(您可以选择任何您想要的内容)

<span class="timer"></span>
<span class="timer"></span>
<span class="timer"></span>

JavaScript

按类timer(或您选择的任何内容)查找所有计时器,并为每个计时器初始化一个新的Timer对象。在此示例中,我们将每个计时器设置为具有 8 秒倒计时。

var timers = document.getElementsByClassName("timer");
for (var i=0, len=timers.length; i<len; i++) {
  var t = new Timer(timers[i], 8);
  t.start();
}

最新更新