javascript中的简单计数计时器

IT技术 javascript
2021-01-13 19:09:44

我正在寻找一个简单的 javascript 计数计时器。我找到的所有剧本都是“全唱全舞”。我只想要一个 jQuery 免费的、最小的、以分钟和秒显示的计时器。谢谢。

6个回答

检查这个:

var minutesLabel = document.getElementById("minutes");
var secondsLabel = document.getElementById("seconds");
var totalSeconds = 0;
setInterval(setTime, 1000);

function setTime() {
  ++totalSeconds;
  secondsLabel.innerHTML = pad(totalSeconds % 60);
  minutesLabel.innerHTML = pad(parseInt(totalSeconds / 60));
}

function pad(val) {
  var valString = val + "";
  if (valString.length < 2) {
    return "0" + valString;
  } else {
    return valString;
  }
}
<label id="minutes">00</label>:<label id="seconds">00</label>

有人可以向我解释为什么 React 可能更适合这样的事情吗?还是 React 正在解决一个完全不同的问题?
2021-03-14 19:09:44
我不推荐这种方法,因为它可能会延迟执行导致错误的值。更好的方法是基于系统时间的计时器。
2021-03-23 19:09:44
如何存储完成测验所需的时间。我刚刚在我现有的测验应用程序中添加了你的代码,现在我需要在点击完成按钮后存储时间值以及我需要显示时间的分数。你能帮我或给我一个任何链接的想法吗
2021-03-26 19:09:44
您的方法虽然在某些情况下可能不适合,但它是一种很好的方法并且对我有用。非常感谢。
2021-04-05 19:09:44

jQuery 计时器 - 更小,有效,经过测试。

    var sec = 0;
    function pad ( val ) { return val > 9 ? val : "0" + val; }
    setInterval( function(){
        $("#seconds").html(pad(++sec%60));
        $("#minutes").html(pad(parseInt(sec/60,10)));
    }, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="minutes"></span>:<span id="seconds"></span>

纯 JavaScript:

    var sec = 0;
    function pad ( val ) { return val > 9 ? val : "0" + val; }
    setInterval( function(){
        document.getElementById("seconds").innerHTML=pad(++sec%60);
        document.getElementById("minutes").innerHTML=pad(parseInt(sec/60,10));
    }, 1000);
<span id="minutes"></span>:<span id="seconds"></span>

更新:

这个答案显示了如何填充。

停止 setInterval MDN是通过 clearInterval MDN实现的

var timer = setInterval ( function(){...}, 1000 );
...
clearInterval ( timer );

小提琴

谢谢......正是我正在寻找的...... +1。请注意,对于那些想要为计时器添加小时数的人,您只需要更改/添加以下代码: $("#minutes").html(timerCall(parseInt(sec/60,10)%60)); $("#hours").html(timerCall(parseInt(sec/3600,10)));
2021-03-15 19:09:44
@Bakudan 为什么在 parseInt 部分使用 ,10 。如果我删除它,它似乎给出了相同的结果。
2021-03-22 19:09:44
setInterval 有它的“邪恶兄弟” clearInterval :) 来摧毁他。我还添加了一个例子
2021-03-24 19:09:44
对于那些需要小时太改变 js 并添加标签: $("#minutes").html(pad(parseInt(sec / 60 % 60, 10))); $("#hours").html(pad(parseInt(sec / 3600 % 60, 10)));
2021-04-05 19:09:44
好的。使用它。谢谢。停止计时器而不重置数字的好方法是什么?
2021-04-06 19:09:44

以下代码用作计数计时器。它是纯 JavaScript 代码,显示hour:minute:second. 它还有一个停止按钮:

var timerVar = setInterval(countTimer, 1000);
var totalSeconds = 0;
function countTimer() {
           ++totalSeconds;
           var hour = Math.floor(totalSeconds /3600);
           var minute = Math.floor((totalSeconds - hour*3600)/60);
           var seconds = totalSeconds - (hour*3600 + minute*60);
           if(hour < 10)
             hour = "0"+hour;
           if(minute < 10)
             minute = "0"+minute;
           if(seconds < 10)
             seconds = "0"+seconds;
           document.getElementById("timer").innerHTML = hour + ":" + minute + ":" + seconds;
        }

    
<div id="timer"></div>
<div id ="stop_timer" onclick="clearInterval(timerVar)">Stop time</div>
        
        

我必须为教师为学生的作业评分创建一个计时器。这是我使用的一个完全基于自评分开始以来经过的时间,通过存储页面加载点的系统时间,然后每半秒将其与该点的系统时间进行比较:

var startTime = Math.floor(Date.now() / 1000); //Get the starting time (right now) in seconds
localStorage.setItem("startTime", startTime); // Store it if I want to restart the timer on the next page

function startTimeCounter() {
    var now = Math.floor(Date.now() / 1000); // get the time now
    var diff = now - startTime; // diff in seconds between now and start
    var m = Math.floor(diff / 60); // get minutes value (quotient of diff)
    var s = Math.floor(diff % 60); // get seconds value (remainder of diff)
    m = checkTime(m); // add a leading zero if it's single digit
    s = checkTime(s); // add a leading zero if it's single digit
    document.getElementById("idName").innerHTML = m + ":" + s; // update the element where the timer will appear
    var t = setTimeout(startTimeCounter, 500); // set a timeout to update the timer
}

function checkTime(i) {
    if (i < 10) {i = "0" + i};  // add zero in front of numbers < 10
    return i;
}

startTimeCounter();

这样,“setTimeout”是否受到执行延迟的影响并不重要,经过的时间总是相对于它第一次开始时的系统时间和更新时的系统时间。

这太好了,与接受的答案相比,我对此进行了计时,并且在我的计算机上,接受的答案每 10 分钟大约会出现 3 秒。这个版本应该得到更多的赞成。
2021-03-15 19:09:44
这应该是正确答案。我相信任何寻找倒计时计时器的人都在寻找这个。其他答案也有效,但是如果您在某个时候离开窗口,似乎计时器已进入休眠状态,因此时间不会连续计数。
2021-03-24 19:09:44

在 stackoverflow 中摆弄 Bakudan 的代码和其他代码,将所有内容合二为一。

更新 #1:添加了更多选项。现在开始、暂停、恢复、重置和重新启动。混合函数以获得所需的结果。

更新 #2:编辑出以前用于纯 JS 的 JQuery 代码并添加为代码片段。

对于以前的基于 Jquery 的小提琴版本:https : //jsfiddle.net/wizajay/rro5pna3/305/

var Clock = {
  totalSeconds: 0,
  start: function () {
    if (!this.interval) {
        var self = this;
        function pad(val) { return val > 9 ? val : "0" + val; }
        this.interval = setInterval(function () {
          self.totalSeconds += 1;

          document.getElementById("min").innerHTML = pad(Math.floor(self.totalSeconds / 60 % 60));
          document.getElementById("sec").innerHTML = pad(parseInt(self.totalSeconds % 60));
        }, 1000);
    }
  },

  reset: function () {
    Clock.totalSeconds = null; 
    clearInterval(this.interval);
    document.getElementById("min").innerHTML = "00";
    document.getElementById("sec").innerHTML = "00";
    delete this.interval;
  },
  pause: function () {
    clearInterval(this.interval);
    delete this.interval;
  },

  resume: function () {
    this.start();
  },

  restart: function () {
     this.reset();
     Clock.start();
  }
};


document.getElementById("startButton").addEventListener("click", function () { Clock.start(); });
document.getElementById("pauseButton").addEventListener("click", function () { Clock.pause(); });
document.getElementById("resumeButton").addEventListener("click", function () { Clock.resume(); });
document.getElementById("resetButton").addEventListener("click", function () { Clock.reset(); });
document.getElementById("restartButton").addEventListener("click", function () { Clock.restart(); });
<span id="min">00</span>:<span id="sec">00</span>

<input id="startButton" type="button" value="Start">
<input id="pauseButton" type="button" value="Pause">
<input id="resumeButton" type="button" value="Resume">
<input id="resetButton" type="button" value="Reset">
<input id="restartButton" type="button" value="Restart">

@MuhFred 添加了重置和重启选项。在这里摆弄jsfiddle.net/wizajay/cbpd0egz
2021-03-15 19:09:44
很好的代码,我想知道如何重置计时器,因为 pause() 从它停止的地方继续。请帮忙!
2021-03-27 19:09:44
@RohanKorde 不错的发现。我已经更新了答案,现在它先检查然后开始。
2021-03-30 19:09:44
确实是好代码。只是想说我注意到如果你多次点击开始,计时器会加速。如果出现这种情况,可能不是人们想要的代码
2021-04-01 19:09:44