这个按钮有什么问题吗? (javascript)

问题描述 投票:0回答:1

我正在制作一个不错的小按钮游戏。到最后天可能会黑。我刚刚开始,现在遇到了问题。我将在下面显示我的代码,然后解释我的问题。

HTML:

<button onclick="change()" id="btn" class="c">hello?</button>
<div class="c">
  <img src="https://i.postimg.cc/mgtbkZ4x/table-removebg-preview.png" id="table" class="obj" onclick = "hide(t)">
  <img src="https://i.postimg.cc/SRRy9m9z/image-removebg-preview-2.png" id="rock" class="obj" onclick = "hide(r)">
</div>

CSS:

#btn {
  width: 140px;
  height: 140px;
  outline: groove 3px;
  outline-color: #00e4e5;
  background-color: #4040ff;
  font-size: 20px;
}
.c {
  margin: 0;
  position: absolute;
  top: 50%;
  left: 50%;
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}
body {
  background-color: #1C1412;
}
.obj {
  height: auto;
  width: 120px;
  background-color: #1C1412;
  visibility: hidden;
}
#table {
  position: absolute;
  top: 50%;
  left: 40%;
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}
#rock {
  position: absolute;
  top: 50%;
  left: 60%;
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}

最后,JavaScript:

navigator.mediaDevices.getUserMedia({
  video: true
})

好的。现在一切都结束了,我将解释我的问题。请随意在 jsfiddle 网站上测试我的代码(如果您想知道的话,您不必注册。) 当“次”为 33 时,按钮显示“好吧。我闭上眼睛。我会在 10 后睁开眼睛”,它应该倒计时,但它不会。在开关内部,我设置了一个 setInterval (和一个clearInterval),看起来设置得很完美,但它不起作用。 它应该从 10 开始倒数,然后说“嘿!你没有躲起来!” (后面的空白只是填充物,修复后我会删除它。)请帮我解决这个问题。

javascript button time setinterval
1个回答
0
投票

阻止倒计时按预期工作的问题在于您清除代码这部分的间隔。

case (33):
  var count = 10
  var dt = setInterval(function() {
    if (count <= 0) {
      clearInterval(dt);
      change();
    } else {
      count--;
      btn.innerText = "my eyes are now closed, and i'll open them in " + count;
    }
  }, 1000);
  clearInterval(dt); // This line is not needed and is clearing the interval immediately
  break;

您在设置间隔后立即清除了间隔,这导致倒计时不起作用。

设置间隔后删除

clearInterval(dt);
线。

case (33):
  var count = 10;
  var dt = setInterval(function() {
    if (count <= 0) {
      clearInterval(dt);
      change();
    } else {
      count--;
      btn.innerText = "my eyes are now closed, and i'll open them in " + count;
    }
  }, 1000);
  break; // Removed the clearInterval(dt);

© www.soinside.com 2019 - 2024. All rights reserved.