读取 div 并检查点击条件

read div and check for a click condition

提问人:David E 提问时间:10/29/2022 最后编辑:Mister JojoDavid E 更新时间:10/29/2022 访问量:31

问:

let timer    = document.querySelector("#timer");
var counter = 3;

function myFn() {
  counter--
  if (counter === -1) {
    counter = 3
  }
  timer.innerText = counter
}

btn.onclick = function() {
  text.innerHTML += 'clicked' + '<br>'
}

var myTimer = setInterval(myFn, 1000);
<div id="timer"></div>
<button id="btn">Button</button>
<div id="text"></div>

我正在尝试使用这个小代码读取每秒并在控制台.log F12 中检查单击条件。它在我尝试做的每一种方式上都给了我不同的错误。div#timer

let timer = document.querySelector("#timer");
let btn = document.querySelector("#btn");

setInterval(() => {
  console.log(timer.textContent)
  if (timer.textContent === '0') {
    btn.click()
  }
}, 1000);
JavaScript jQuery 构造函数 回调 间隔

评论

1赞 Rory McCrossan 10/29/2022
你的问题,或者目标,没有任何意义。如果要检测单击,请使用单击事件处理程序。计时器与此有什么关系?

答:

0赞 Twisty 10/29/2022 #1

请考虑以下 jQuery 示例。

$(function() {
  var timer = 0;
  var counter = 3;
  var timeObj = $("#timer");
  var btnObj = $("#btn");
  var txtObj = $("#text");
  var interval;

  function myFn() {
    if (--counter >= 0) {
      txtObj.append("Clicked<br />");
    } else {
      clearInterval(interval);
    }
  }

  interval = setInterval(function() {
    timeObj.html(++timer);
  }, 1000);

  btnObj.click(myFn);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="timer">0</div>
<button id="btn">Button</button>
<div id="text"></div>

你会想要使用而不是.setInterval()setTimeout()

该方法在 Window 和 Worker 接口上提供,可重复调用函数或执行代码片段,每次调用之间有固定的时间延迟。setInterval()

此方法返回唯一标识间隔的间隔 ID,因此您可以稍后通过调用 将其删除。clearInterval()

查看更多:https://developer.mozilla.org/en-US/docs/Web/API/setInterval

在变量之前使用 and 也将在使用之前应用更改。--++

递减运算符 () 递减(从中减去 1)其操作数,并返回递减之前或之后的值,具体取决于运算符的放置位置。--

调整此处的逻辑还可以确保按钮单击确实允许用户继续执行操作。