我在这里的逻辑有点麻烦:

var seccount=60;
var seccounter=setInterval(sectimer, 1000);
function sectimer() {
  seccount=seccount-1;
  if (seccount < 0) {
    seccount=59;
    return;
}
document.getElementById("sectimer").innerHTML=seccount+ " seconds!";


当该值降至0时,计时器将在0停留2秒钟,然后再次跳至58。我在函数中尝试了一些不同的操作,例如:

function sectimer() {
  seccount=seccount-1;
  if (seccount <= 0) {
    seccount=59;
    return;
}




function sectimer() {
  seccount=seccount-1;
  if (seccount < 1) {
    seccount=60;
    return;
}


但一切都有一些变化,计时器会冻结在某个数字2秒钟,然后转到我选择的数字。

我想念什么?

最佳答案

退货放错了地方。尝试这个:

var seccount=60;
var seccounter=setInterval(sectimer, 1000);
function sectimer() {
    seccount--;
    if (seccount < 0) {
        seccount=59;
    }
    document.getElementById("sectimer").innerHTML=seccount+ " seconds!";
}


return导致功能立即终止,因此当它进入条件if (seccount < 0)时(在seccount-1的情况下),seccount被更新为59它永远不会到达下面的元素更新,而是终止于return。然后,下次运行一秒钟后,seccount会下降到显然不小于零的58,然后跳到元素更新行。这就是为什么您感觉丢失了2秒的原因,因为您跳过了一次元素更新:-)

09-09 23:35