【问题标题】:Issue with javascript timerjavascript计时器问题
【发布时间】:2019-11-13 01:40:01
【问题描述】:

我通过 JavaScript 编写了一个计时器代码。我想在单击按钮时停止此计时器,然后通过双击同一按钮重新启动它,但是,它目前只能工作一次。

代码如下:

let pElement = document.createElement('p');
document.body.appendChild(pElement);

let liveTimer = () => {
  let date = new Date();
  let onlineTime = date.toLocaleTimeString();

  pElement.innerHTML = onlineTime;
};

let setI = setInterval(liveTimer, 1000);

function stopTime() {
  clearInterval(setI);
}

function startTimer() {
  setInterval(liveTimer, 1000);
}
<button onclick="stopTime()" ondblclick="startTimer()">click me</button>

【问题讨论】:

标签: javascript timer


【解决方案1】:

您在startTimer 函数中第二次调用setInterval 时忘记设置interval-Id。

仅仅因为您在此处设置了值let setI= setInterval(liveTimer,1000);,并不意味着当您执行setInterval(liveTimer,1000); 时该值将被刷新。这将返回您需要存储在变量中的不同值。

let pElement = document.createElement('p');
document.body.appendChild(pElement);


let liveTimer = () => {
  let date = new Date();

  let onlineTime = date.toLocaleTimeString();

  pElement.innerHTML = onlineTime;

};

let setI = setInterval(liveTimer, 1000);

function stopTime() {
  clearInterval(setI);
}


function startTimer() {
  setI = setInterval(liveTimer, 1000);
}
<button onclick="stopTime()" ondblclick="startTimer()">click me</button>

【讨论】:

  • 想一想,这是个打字错误,可以关闭
  • 非常感谢
  • @mplungjan 仅仅因为解决方案一旦提出就听起来很明显,并不意味着问题是一个错字。我会说这个问题更接近于语法错误,因为用户不知道该值没有绑定到区间。
  • 没有“关闭为语法错误”可供选择。 Typo-type 也涵盖了这一点
  • @mplungjan 为什么会属于同一类别?该问题可能是由于缺乏 JavaScript 知识引起的(对 OP 没有任何冒犯)。这难道不是 SO 存在的主要原因之一吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多