如何在页面加载时添加一个计时器,该计时器在单击按钮时停止?

How to add a timer on page load that stops when button is clicked?

我想在页面加载时开始的页面上添加一个计时器。

以毫秒为单位上升的位置。

然后当鼠标点击按钮时停止。

我将如何创建一个代码示例?

这就是我要在代码中做的所有事情。

添加一个在页面加载时启动的计时器。

以毫秒为单位上升。

然后在单击按钮时停止。

我希望能够看到数字上升。

https://jsfiddle.net/xvkwmndq/

// Counter
    var enterDate = new Date();
    function secondsSinceEnter()
    {
      return (new Date() - enterDate) / 1000;
    }

    // Usage example
    document.querySelector('button').onclick = function() {
      var sec = secondsSinceEnter();
      if (sec < 10)
          this.innerText = sec + " seconds";
      else
          this.innerText = 'You are here like for eternity';
    };
.play {
      -webkit-appearance: none;
      appearance: none;
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      margin: auto;
      display: flex;
      justify-content: center;
      align-items: center;
      width: 90px;
      height: 90px;
      border-radius: 50%;
      cursor: pointer;
      border: 9px solid blue;
      background: transparent;
      filter: drop-shadow(3px 3px 3px #000000b3);
    }
<button class="play" type="button" aria-label="Open"></button>

与您评论中的jsfiddle相关:

不要使用 this 访问按钮。相反,只需使用 document.querySelector:

document.querySelector('button').onclick = function() {
  var sec = secondsSinceEnter();
  if (sec < 10)
    document.querySelector('button').innerText = sec + " seconds";
  else
    document.querySelector('button').innerText = 'You are here like for eternity';
}

然后,您只需添加单击按钮的时间。此外,您应该使用 setInterval 每 0 毫秒(每 'tick')调用一次它。这样您就不必两次编写该函数,您可以将其定义为一个单独的函数。最后去掉按钮点击的时间间隔

完整脚本:

// Interval
var interval;

// Counter
var enterDate = new Date();
function secondsSinceEnter()
{
  return (new Date() - enterDate) / 1000;
}

// Event function
function evtFct()
{
  var sec = secondsSinceEnter().toFixed(3);
  if (sec < 10)
    document.querySelector('button').innerText = sec + " seconds";
  else
    document.querySelector('button').innerText = 'You are here like for eternity';
}

// Add interval to keep the current time uptodate
interval = setInterval(evtFct, 0); // Call evtFct every tick

// Usage example
document.querySelector('button').onclick = function()
{
  evtFct();
  clearInterval(interval); // Disable interval
}