【发布时间】:2016-06-11 12:56:38
【问题描述】:
我正在开发番茄钟式的计时器。计时器必须能够执行以下操作:
按下“开始”按钮时:
- 启动 5 秒计时器。当然,时代会改变)
- 定时器到期后,发送带有开始和结束时间戳的 AJAX 事件
- 启动 3 秒计时器。
- 定时器到期后,启动一个新的 5 秒定时器。 (循环步骤 1 到 3 共 4 次)
- 在第四个循环结束时,启动一个 7 秒计时器。
- 7 秒定时器到期后,再次启动 5-3 循环。
按下“停止”按钮时:
- 取消计时器,将其重置回默认状态。
这是我现在的代码:
HTML
<html>
<head>
<meta charset="UTF-8">
<title>Pomodoro Test</title>
<link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
<div id="test"></div>
<div id="timer">5</div>
<button id="start">Start</button>
<button id="reset">Reset</button>
<div id="startTime"></div>
<div id="endTime"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script src="functions.js"></script>
</body>
</html>
JavaScript:
var timer = 5;
var flag = 0;
var startTime;
var endTime;
var intervalTimer;
function update() {
if (timer-- > 0) {
$("#timer").html(timer); // retrieve value from html
} else {
endTime = new Date();
//alert("Start Time = " + startTime + "\nEnd Time = " + endTime);
$("#endTime").html("End time: " + endTime.toTimeString());
resetTimer();
// TODO: send ajax call to server, sending startTime and endTime
// so that these can be saved to database
}
}
function loopingTimer() {
while(flag === 0) {
startTime = new Date();
$("#startTime").html("Start time: " + startTime.toTimeString());
startTimer();
i++;
setTimeout(function() {
if(i < 5) {
loopingTimer();
}
}, 3001)}};
$("#start").click(function() {
loopingTimer();
});
$("#reset").click(function() {
flag = 1;
});
function startTimer() {
intervalTimer = window.setInterval(update, 500);
}
function resetTimer() {
stopTimer();
timer = 5;
$("#timer").text(timer);
}
function stopTimer() {
window.clearInterval(intervalTimer);
}
我发现获得所需的功能非常困难,我已经修改此代码 2 天。我真诚地希望你们能帮助我。
蛋糕。
【问题讨论】:
标签: javascript jquery ajax timer