gpt4 book ai didi

javascript - 编程定时器

转载 作者:行者123 更新时间:2023-12-02 15:42:31 26 4
gpt4 key购买 nike

所以,我想创建一个计时器,这是我到目前为止的代码。

<!DOCTYPE html>

<html>

<head>

<title>WIP</title>
<meta charset="UFT-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<script>
function timerCreate(minutes, seconds) {
var i = 0;
var f = 0;
$("#timerText").text((minutes - f) + ":" + (seconds - i));
i++;
do {
interval = setInterval(function() {
$("#timerText").text((minutes - f) + ":" + (seconds - i));
i++;
if (i >= seconds) {
clearInterval(interval);
setTimeout(function() {
$("#timerText").text((minutes - f) + ":" + "0");
}, 1000);
if (minutes > 0) {
f++;
}
}
}, 1000);
} while (!(f = minutes));
}
</script>

</head>

<body onload='timerCreate(5, 4)'>

<div id="timerText">Timer</div>

</body>

</html>

请运行代码看看它做了什么。我不明白它为什么这样做。有人可以帮忙吗?另外,虽然我觉得我最终会得到它,但在我看来,这段代码似乎到处都是。如果您同意,如果您能将我链接到一些计时器代码,我将非常感激。不管怎样,如果你能向我解释我做错了什么,我真的很高兴。

非常感谢所有回答的人。 :-)

最佳答案

这显然是递归函数的工作。首先你需要timerCreate(5, 4)。
接下来会发生什么,1 秒后您可以调用timerCreate(5, 3)。
所以很明显让函数调用自身(=递归函数),每次少 1 秒。

注意模运算符 % 与/运算符。% 的作用是告诉您除法后还剩下什么。

示例:

91 / 60 = 1 + 31/60
Math.floor(91/60) = 1;
91%60 = 31;

所以划分和地板给你几分钟;取模为您提供秒数。

这是我刚刚根据我对这个问题的第一直觉写的东西(没有查看其他计时器;显然网上有很多计时器)。

<input id="m" placeholder="minutes" value="1">
<input id="s" placeholder="seconds" value="17">
<input type="button" value="Start" onclick="startTimer()">
<input type="button" value="Stop" onclick="stopTimer()">
<hr>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
var timer;
function displayTimer(m, s) {
$('#m').val(m);
$('#s').val(s);
}

function stopTimer() {
clearTimeout(timer);
}

function startTimer() {
var m = Number($('#m').val());
var s = Number($('#s').val());
timerClick(m, s);
}

function finishTimer() {
alert('finished!');
}

function timerClick(m, s) {
// convert into seconds
var seconds = 60*m + s;
// display timer, unless the timer has been set off
if(timer) {
displayTimer(m, s);
}
if (m == 0 && s == 0) {
finishTimer();
return true;
}
// remove one second
seconds--;
// call this function again
timer = setTimeout(function() {
timerClick(Math.floor(seconds / 60), seconds % 60);
},
1000
);
}
</script>

关于javascript - 编程定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32459435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com