为什么我不能增加计时器值?
Why I can't increment the chronometer value?
我想要一个计时器,我找到了下一个代码。问题是当我将 time = new Date(time - 1000);
更改为 time = new Date(time + 1000);
这是我的代码:
<!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>
如何增加时间?
谢谢!
使用date.getTime()
从日期对象中获取时间戳。在你的情况下:
time = new Date(time.getTime() + 1000);
尝试这个解决方案https://jsfiddle.net/giuseppe_straziota/eag01ojj/
$(".start").on("click", function(){
interv = setInterval(function(){
time.setSeconds(time.getSeconds() + 1);
displayTime();
}, 1000);
});
问题是您尝试用另一个 Date 对象作为参数来实例化 Date 对象。
var time = new Date(startValue);
...
time = new Date(time + 1000);
下次尝试使用console.log()进行调试。
您还有其他一些问题,例如为什么您的计数器从 1 而不是 0 开始?
这是一个可以解决所有问题的快速工作示例:https://jsfiddle.net/r6k06w40/3/
我想要一个计时器,我找到了下一个代码。问题是当我将 time = new Date(time - 1000);
更改为 time = new Date(time + 1000);
这是我的代码:
<!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>
如何增加时间? 谢谢!
使用date.getTime()
从日期对象中获取时间戳。在你的情况下:
time = new Date(time.getTime() + 1000);
尝试这个解决方案https://jsfiddle.net/giuseppe_straziota/eag01ojj/
$(".start").on("click", function(){
interv = setInterval(function(){
time.setSeconds(time.getSeconds() + 1);
displayTime();
}, 1000);
});
问题是您尝试用另一个 Date 对象作为参数来实例化 Date 对象。
var time = new Date(startValue);
...
time = new Date(time + 1000);
下次尝试使用console.log()进行调试。
您还有其他一些问题,例如为什么您的计数器从 1 而不是 0 开始?
这是一个可以解决所有问题的快速工作示例:https://jsfiddle.net/r6k06w40/3/