鱼C论坛

 找回密码
 立即注册
查看: 248|回复: 1

[学习笔记] 红绿灯

[复制链接]
发表于 2023-12-16 15:14:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>红绿灯</title>
</head>
<body>
<style>
span {
    display: inline-block;
    width: 80px;
    height: 80px;
    border-radius: 50%;
    border: 1px solid white;
    opacity: 0.1;
}
.light {
    opacity: 1;
}
#red {
    background-color: red;
}
#yellow {
    background-color: yellow;
}
#green {
    background-color: green;
}
#time {
    margin-left: 30px;
    font-size: 70px;
}
</style>
红绿灯
<p>
    <span id="red" class="light"></span>
    <span id="yellow"></span>
    <span id="green"></span>
    <b id="time">10</b>
</p>
<script>
   var current = 'red';
   var time = 10;
   function changeLight(from, to, timeout) {
     if (time > 0) {
        return;
     }
     current = to;
     time = timeout;
     document.getElementById(from).removeAttribute('class', 'light');
     document.getElementById(to).setAttribute('class', 'light');
   }
   setInterval(function() {
     time--;
     if (current === 'red') {
        changeLight('red', 'yellow', 3);
     } else if (current === 'yellow') {
        changeLight('yellow', 'green', 8);
     } else if (current === 'green') {
        changeLight('green', 'red', 10);
     }
     document.getElementById('time').innerText = time;
   }, 1000);
</script>
</body>
</html>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-16 15:14:55 | 显示全部楼层
这段代码是一个模拟红绿灯的简单示例。代码中定义了三个圆形<span>元素,分别对应红、黄、绿三个信号灯。通过给对应的<span>元素添加或移除`light`类来控制信号灯是否亮起。

变量`current`表示当前亮起的信号灯,变量`time`表示当前信号灯剩余时间,初始值为10秒。

`changeLight()`函数用于改变信号灯的状态。它接收两个参数,from表示要改变的信号灯的标识,to表示要改变成的信号灯的标识,timeout表示改变后的信号灯持续时间。该函数首先检查当前时间是否大于0,如果大于0则返回,即不改变信号灯的状态。否则,将current变量更新为to的值,将time变量更新为timeout的值,然后将from对应的<span>元素移除`light`类,将to对应的<span>元素添加`light`类。

`setInterval()`函数用于定时执行指定的函数。此处将每秒钟执行一次匿名函数。在匿名函数中,首先将time减1,然后根据current的值来决定是否需要改变信号灯的状态。如果current是'red',则调用changeLight('red', 'yellow', 3)函数;如果current是'yellow',则调用changeLight('yellow', 'green', 8)函数;如果current是'green',则调用changeLight('green', 'red', 10)函数。最后,更新页面上显示的time的值。

运行这段代码,你会看到一个模拟红绿灯的效果。初始状态下,红灯亮起,倒数计时从10开始,每秒钟减1。当时间减到0时,红灯变黄,持续3秒钟,然后黄灯变绿,持续8秒钟,接着绿灯变红,持续10秒钟,再循环往复。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 03:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表