eenvoudige opteltimer in javascript

Ik ben op zoek naar een eenvoudige opteltimer in javascript. Alle scripts die ik vind zijn ‘allen zingend en dansend’. Ik wil gewoon een jQuery-vrije, minimale opteltimer die wordt weergegeven in minuten en seconden. Bedankt.


Antwoord 1, autoriteit 100%

Controleer dit:

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>

Antwoord 2, autoriteit 45%

Timer voor jQuery – kleiner, werkend, getest.

   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>

Antwoord 3, autoriteit 27%

De volgende code werkt als een opteltimer. Het is pure JavaScript-code die hour:minute:secondlaat zien. Het heeft ook een STOP-knop:

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>
        

Antwoord 4, autoriteit 14%

Ik moest een timer maken voor docenten die het werk van studenten beoordelen. Hier is er een die ik heb gebruikt en die volledig is gebaseerd op de verstreken tijd sinds de beoordeling is begonnen door de systeemtijd op te slaan op het moment dat de pagina wordt geladen en deze vervolgens elke halve seconde te vergelijken met de systeemtijd op dat moment:

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();

Op deze manier maakt het echt niet uit of de ‘setTimeout’ onderhevig is aan uitvoeringsvertragingen, de verstreken tijd is altijdrelatief ten opzichte van de systeemtijd toen het voor het eerst begon, en de systeemtijd op het tijd van update.


Antwoord 5, autoriteit 6%

Gerommeld met de Bakudan-code en andere code in stackoverflow om alles in één te krijgen.

Update #1: meer opties toegevoegd. Nu starten, pauzeren, hervatten, resetten en opnieuw opstarten. Mix de functies om de gewenste resultaten te krijgen.

Update #2: Eerder gebruikte JQuery-codes voor pure JS verwijderd en toegevoegd als codefragment.

Voor eerdere op JQuery gebaseerde fiddle-versie: 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">

Antwoord 6, autoriteit 3%

Uitbreiding van @Chandu, met wat UI toegevoegd:

<html>
<head>
<script   src="https://code.jquery.com/jquery-3.2.1.min.js"   integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="   crossorigin="anonymous"></script>
</head>
<style>
button {
background: steelblue; 
border-radius: 4px; 
height: 40px; 
width: 100px; 
color: white; 
font-size: 20px; 
cursor: pointer; 
border: none; 
}
button:focus {
outline: 0; 
}
#minutes, #seconds {
font-size: 40px; 
}
.bigger {
font-size: 40px; 
}
.button {
  box-shadow: 0 9px #999;
}
.button:hover {background-color: hotpink}
.button:active {
  background-color: hotpink;
  box-shadow: 0 5px #666;
  transform: translateY(4px);
}
</style>
<body align='center'>
<button onclick='set_timer()' class='button'>START</button>
<button onclick='stop_timer()' class='button'>STOP</button><br><br>
<label id="minutes">00</label><span class='bigger'>:</span><label id="seconds">00</label>
</body>
</html>
<script>
function pad(val) {
  valString = val + "";
  if(valString.length < 2) {
     return "0" + valString;
     } else {
     return valString;
     }
}
totalSeconds = 0;
function setTime(minutesLabel, secondsLabel) {
    totalSeconds++;
    secondsLabel.innerHTML = pad(totalSeconds%60);
    minutesLabel.innerHTML = pad(parseInt(totalSeconds/60));
    }
function set_timer() {
    minutesLabel = document.getElementById("minutes");
    secondsLabel = document.getElementById("seconds");
    my_int = setInterval(function() { setTime(minutesLabel, secondsLabel)}, 1000);
}
function stop_timer() {
  clearInterval(my_int);
}
</script>

Ziet er als volgt uit:


Antwoord 7

@Cybernate, ik was vandaag op zoek naar hetzelfde script, bedankt voor je input. Ik heb het echter een beetje veranderd voor jQuery…

function clock(){
    $('body').prepend('<div id="clock"><label id="minutes">00</label>:<label id="seconds">00</label></div>');
         var totalSeconds = 0;
        setInterval(setTime, 1000);
        function setTime()
        {
            ++totalSeconds;
            $('#clock > #seconds').html(pad(totalSeconds%60));
            $('#clock > #minutes').html(pad(parseInt(totalSeconds/60)));
        }
        function pad(val)
        {
            var valString = val + "";
            if(valString.length < 2)
            {
                return "0" + valString;
            }
            else
            {
                return valString;
            }
        }
}
$(document).ready(function(){
    clock();
    });

het css-gedeelte:

<style>
#clock {
    padding: 10px;
    position:absolute;
    top: 0px;
    right: 0px;
    color: black;
}
</style>

Antwoord 8

Opmerking: voeg altijd jQuery toe voordat u jQuery-scripts schrijft

Stap 1: setInterval functie wordt elke 1000ms genoemd (1s)

Stpe2: In die functie. Verhogen de seconden

Stap 3: Controleer de voorwaarden

<span id="count-up">0:00</span>
<script>
	  var min    = 0;
      var second = 00;
      var zeroPlaceholder = 0;
      var counterId = setInterval(function(){
                        countUp();
                      }, 1000);
      function countUp () {
          second++;
          if(second == 59){
            second = 00;
            min = min + 1;
          }
          if(second == 10){
              zeroPlaceholder = '';
          }else
          if(second == 00){
              zeroPlaceholder = 0;
          }
          document.getElementById("count-up").innerText = min+':'+zeroPlaceholder+second;
      }
</script>

Antwoord 9

Controleer deze oplossingen:

Compute verstreken tijd


Antwoord 10

Net wilde mijn 2 cent in te zetten. Ik wijzigde functie @Ajay Singh’s van handvat aftellen en optellen Hier is een knipsel uit de jsfiddle.

var countDown = Math.floor(Date.now() / 1000)
runClock(null, function(e, r){ console.log( e.seconds );}, countDown);
var t = setInterval(function(){
  runClock(function(){
    console.log('done');
    clearInterval(t);
  },function(timeElapsed, timeRemaining){
    console.log( timeElapsed.seconds );
  }, countDown);
}, 100);

https://jsfiddle.net/3g5xvaxe/


Antwoord 11

Hier is een React (Native) versie:

import React, { Component } from 'react';
import {
    View,
    Text,
} from 'react-native';
export default class CountUp extends Component  {
    state = {
        seconds: null,
    }
    get formatedTime() {
        const { seconds } = this.state;
        return [
            pad(parseInt(seconds / 60)),
            pad(seconds % 60),
        ].join(':');
    }
    componentWillMount() {
        this.setState({ seconds: 0 });
    }
    componentDidMount() {
        this.timer = setInterval(
            () => this.setState({
                seconds: ++this.state.seconds
            }),
            1000
        );
    }
    componentWillUnmount() {
        clearInterval(this.timer);
    }
    render() {
        return (
            <View>
                <Text>{this.formatedTime}</Text>
            </View>
        );
    }
}
function pad(num) {
    return num.toString().length > 1 ? num : `0${num}`;
}

Antwoord 12

Hier is er een die .padStart():

<!DOCTYPE html>
<html lang='en'>
<head>
  <meta charset='UTF-8' />
  <title>timer</title>
</head>
<body>
  <span id="minutes">00</span>:<span id="seconds">00</span>
  <script>
    const minutes = document.querySelector("#minutes")
    const seconds = document.querySelector("#seconds")
    let count = 0;
    const renderTimer = () => {
      count += 1;
      minutes.innerHTML = Math.floor(count / 60).toString().padStart(2, "0");
      seconds.innerHTML = (count % 60).toString().padStart(2, "0");
    }
    const timer = setInterval(renderTimer, 1000)
  </script>
</body>
</html>

Van MDN:

De methode padStart() vult de huidige tekenreeks op met een andere tekenreeks (herhaald, indien nodig) zodat de resulterende tekenreeks de opgegeven lengte bereikt. De opvulling wordt toegepast vanaf het begin (links) van de huidige tekenreeks.

Other episodes