Juan Camacho Juan Camacho - 5 months ago 11
jQuery Question

Why I can't increment the chronometer value?

I would like a time counter and I found the next code. The problem is when I change

time = new Date(time - 1000);
to
time = new Date(time + 1000);


This is my code:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>My page</title>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<style>
a{
margin: 0 10px;
color: gray;
}
.time{
font-size: 50px;
margin: 20px;
font-family: monospace;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script>
var startValue = 1000; //Number of milliseconds
var time = new Date(startValue);
var interv;
$(function(){
displayTime();
$(".start").on("click", function(){
interv = setInterval(function(){
//time = new Date(time - 1000);
time = new Date(time + 1000);
displayTime();
}, 1000);
});
$(".stop").on("click", function(){
clearInterval(interv);
time = new Date(startValue);
displayTime();
});
$(".pause").on("click", function(){
clearInterval(interv);
});
$(".reset").on("click", function(){
time = new Date(startValue);
displayTime();
});
});

function displayTime(){
$(".time").text(fillZeroes(time.getMinutes()) + ":" + fillZeroes(time.getSeconds()));
}

function fillZeroes(t){
t += "";
return t.length==1? "0" + t : t;
}
</script>
</head>
<body>
<a href="#" class="start">start</a>
<a href="#" class="stop">stop</a>
<a href="#" class="pause">pause</a>
<a href="#" class="reset">reset</a>
<div class="time"></div>
</body>
</html>


How I can increment the time?
Thank you!

Answer

Use date.getTime() to get a timestamp from a Date object. In your case:

time = new Date(time.getTime() + 1000);

Demo: https://plnkr.co/edit/G8yo5l4wHe2yv9S3fjLI?p=preview

Comments