今天心血来潮,想搞个简单的倒计时器,名字就叫“ticktock”,挺形象的。
我先琢磨着,这玩意儿得有个界面,起码得能显示个数字,然后还得能让我设置时间。于是我打开 VS Code,新建一个 HTML 文件,吭哧吭哧写起来。
先用<div>搭个架子,里面放个<span>用来显示倒计时的数字,再来几个<input>和<button>,用来输入时间和控制开始、暂停、重置。

<div>
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
<span id="countdown">00:00:00</span>
</div>
<div>
<input type="number" id="hours" placeholder="时">
<input type="number" id="minutes" placeholder="分">

<input type="number" id="seconds" placeholder="秒">
</div>
<div>
<button id="start">开始</button>
<button id="pause">暂停</button>
<button id="reset">重置</button>

</div>
界面有,接下来就是让它动起来。我又新建个 JavaScript 文件,开始写逻辑。
得获取到页面上的那些元素,像显示数字的<span>,输入框<input>,按钮<button>啥的,都得拿到手。
const countdownDisplay = *('countdown');
const startBtn = *('start');
// ... 其他元素获取类似

然后,我得有个变量来记录剩余时间,还得有个定时器,每秒钟减少一点时间,更新显示。
let timeLeft = 0;
let timerId = null;
function updateDisplay() {
// ... 把 timeLeft 格式化成 00:00:00 这种形式

function tick() {
timeLeft--;
updateDisplay();
if (timeLeft <= 0) {
clearInterval(timerId);
alert('时间到!');

重点来,我得给“开始”按钮加个点击事件,点一下就开始倒计时。
*('click', () => {
const hours = parseInt(*('hours').value) 0; //获取输入的小时,没有就为0
const minutes = parseInt(*('minutes').value) 0;

const seconds = parseInt(*('seconds').value) 0;
timeLeft = hours 3600 + minutes 60 + seconds; //把时间转换为秒数
if (timeLeft > 0) { //如果输入的时间有效
if(!timerId){ //防止多次点击开始按钮
timerId = setInterval(tick, 1000); //启动定时器

“暂停”和“重置”按钮也得安排上,一个用来停掉定时器,一个用来清空时间,恢复初始状态。
*('click', () => {
clearInterval(timerId);
timerId = null;

*('click', () => {
clearInterval(timerId);
timerId = null;
timeLeft = 0;
updateDisplay();

//清空输入框的值
*('hours').value = '';
*('minutes').value = '';
*('seconds').value = '';
稍微调整下样式,让它看起来更顺眼些。一个简单的倒计时器就这么完成,还挺有成就感的。

虽然功能简单,但也是一步步做出来的,从无到有,感觉还不错。以后有时间再慢慢完善,加点其他功能啥的。



