杨校老师课堂之JavaScript定时器案例的红绿灯设计--原始写法

简介: 杨校老师课堂之JavaScript定时器案例的红绿灯设计--原始写法

主要介绍了JavaScript定时器设置、使用与倒计时案例,详细分析了javascript定时器的设置、取消、循环调用并附带一个倒计时功能应用案例,需要的朋友可以参考下:

运行效果图:

配套视频课程

image.png

基于JavaScript的红绿灯设计


演示代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta author="Mryang">
    <meta keyword="杨校老师课堂_CSDN地址——https://mryang.blog.csdn.net/">
    <title>基于JavaScript的红绿灯设计</title>
</head>
<style>
    .box{
        width: 310px;
        height: 80px;
        border: 2px solid #ccc;
        border-radius: 15px;
        margin: 0 auto;
    }
    .box div{
        width: 60px;
        height: 60px;
        border-radius: 50%;
        border: 1px solid #666;
        float: left;
        margin-left: 13px;
        margin-top: 8px;
    }
    .box .count{
        width: 60px;
        height: 60px;
        margin-left: 13px;
        margin-top: 8px;
        font-size: 250%;
        line-height: 60px;
        text-align: center;
        border: 0;
    }
    /*  继续编写 颜色*/
    .gray{
        background-color: #eeeeee;
    }
    .red{
        background-color: red;
    }
    .yellow{
        background-color: yellow;
    }
    .green{
        background-color: #25FF00 ;
    }
</style>
<body>
    <!--外层的大盒子-->
    <div class="box">
        <!--1. 红灯-->
        <div id="red"></div>
        <!--2. 黄灯-->
        <div id="yellow"></div>
        <!--3. 绿灯-->
        <div id="green"></div>
        <!--4. 倒计时-->
        <div id="count" class="count"></div>
    </div>
</body>
</html>
<script type="text/javascript">
    // 1. 网页一经加载,显示为绿色,其次为黄色、最后变为红色
    window.onload = function () {
        // 1.1 默认展示为绿色
        var defaultColor = 'green';

        // 1.2 通过调用【更改颜色】的方法进行切换颜色并实现数字的倒计时显示,参数默认为颜色的色调即defaultColor
        changeColor(defaultColor);

    }
    // 定义 倒计时的变量,初始化值为 空
    var timeout = null;
    // 定义临时变量 number 来存储 倒计时的数字,用于拼接 09
    var number = null;

    // 定义变量timer 用于 接受 定时器,并且进行清楚定时器
    var  timer = null;

    //2. 定义方法: 更改颜色
    function changeColor(lightColor) {
        // 2.1 因为不确定传入的颜色是什么颜色,所以需要做个判断:
        if(lightColor == 'green'){
            //alert('传入颜色成功,颜色刚好是:' + lightColor)
            // 绿色倒计时 时长为 35s
            timeout = 35;
            // alert('绿色倒计时 时长为:' + timeout)
            // 绿灯时: 三个的颜色为  灰色  灰色  绿色 35
            document.getElementById("green").className = 'green';
            document.getElementById("yellow").className = 'gray';
            document.getElementById("red").className = 'gray';
            // 清除定时器
            clearInterval(timer)
            // 调用定时器
            timer = setInterval(function () {
                // 处理 倒计时的表达式 数值小于0
                if(timeout <= 0){
                    // 当倒计时为0 ,进入颜色的更替
                    changeColor('yellow');
                }
                // 使用number 变量 进行接受 timeout--
                number = timeout--;
                document.getElementById("count").innerText = (number < 10) ? ('0' + number) :number;
            },1000);
        }
        if(lightColor == 'yellow'){
            //alert('传入颜色成功,颜色刚好是:' + lightColor)
            // 黄色倒计时 时长为 5s
            timeout = 5;
            // alert('黄色倒计时 时长为:' + timeout)
            // 黄灯时: 三个的颜色为  灰色  黄色  灰色 5
            document.getElementById("green").className = 'gray';
            document.getElementById("yellow").className = 'yellow';
            document.getElementById("red").className = 'gray';
            // 清除定时器
            clearInterval(timer)
            // 调用定时器
            timer = setInterval(function () {
                // 处理 倒计时的表达式 数值小于0
                if(timeout <= 0){
                    // 当倒计时为0 ,进入颜色的更替
                    changeColor('red');
                }
                // 使用number 变量 进行接受 timeout--
                number = timeout--;
                document.getElementById("count").innerText = (number < 10) ? ('0' + number) :number;
            },1000);
        }
        if(lightColor == 'red'){
            //alert('传入颜色成功,颜色刚好是:' + lightColor)
            // 红色倒计时 时长为 20s
            timeout = 20;
            // alert('红色倒计时 时长为:' + timeout)
            // 红灯时: 三个的颜色为  红色  灰色  灰色 20
            document.getElementById("green").className = 'gray';
            document.getElementById("yellow").className = 'gray';
            document.getElementById("red").className = 'red';
            // 清除定时器
            clearInterval(timer)
            // 调用定时器
            timer = setInterval(function () {
                // 处理 倒计时的表达式 数值小于0
                if(timeout <= 0){
                    // 当倒计时为0 ,进入颜色的更替
                    changeColor('green');
                }
                // 使用number 变量 进行接受 timeout--
                number = timeout--;
                document.getElementById("count").innerText = (number < 10) ? ('0' + number) :number;
            },1000);
        }
    }
</script>

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

目录
相关文章
|
2月前
|
数据采集 Web App开发 JavaScript
利用Selenium和XPath抓取JavaScript动态加载内容的实践案例
利用Selenium和XPath抓取JavaScript动态加载内容的实践案例
|
2月前
|
JavaScript 前端开发 UED
Javaweb之javascript的小案例的详细解析
通过上述步骤,我们得到了一个动态更新的实时时钟,这个简单的JavaScript案例展示了定时器的使用方法,并讲解了如何处理日期和时间。这个案例说明了JavaScript在网页中添加动态内容与交互的能力。对于涉足JavaWeb开发的学习者来说,理解和运用这些基础知识非常重要。
36 11
|
2月前
|
JavaScript 前端开发
解决在JS中阻止定时器“重复”开启问题、Vue中定时器的使用
这篇文章讨论了在JavaScript和Vue中如何避免定时器重复开启的问题,并提供了一个模拟场景和代码示例,演示了在开启新定时器前清除旧定时器的方法。
解决在JS中阻止定时器“重复”开启问题、Vue中定时器的使用
|
2月前
|
JavaScript 前端开发
js之永久定时器
js之永久定时器
|
2月前
|
JavaScript 前端开发
|
2月前
|
前端开发 JavaScript 开发者
fuse.js前端搜索简单使用的三个案例
通过这三个例子可以看出,Fuse.js 是一个功能丰富、易于实现的前端搜索库。它使开发者能够便捷地实现从基础到高级的搜索功能,无论是简单的列表搜索还是实时的搜索建议,都能够高效、精确地提供给用户所需的信息。
80 0
|
2月前
|
JavaScript 前端开发 开发者
Vue.js 2 项目实战(四):成绩案例
Vue.js 2 项目实战(四):成绩案例
|
4月前
|
JavaScript 前端开发 安全
JavaScript基础-定时器:setTimeout, setInterval
【6月更文挑战第13天】JavaScript中的`setTimeout`和`setInterval`是异步编程的关键工具,用于按计划执行代码。`setTimeout`在延迟后执行一次,而`setInterval`则周期性执行。常见问题包括忘记清除定时器导致内存泄漏,递归使用`setTimeout`可能引发无限递归,以及字符串代码执行的安全隐患。解决方法包括使用`clearTimeout`和`clearInterval`,设置递归终止条件,以及优先使用函数表达式。理解定时器的非精确性并采用错误处理策略也是实践中的重要技巧。通过示例展示了如何延迟显示消息和周期性打印计数。
57 2
|
JavaScript 前端开发
js 定时器用法详解——setTimeout()、setInterval()、clearTimeout()、clearInterval()
写在前面: 在js应用中,定时器的作用就是可以设定当到达一个时间来执行一个函数,或者每隔几秒重复执行某段函数。这里面涉及到了三个函数方法:setInterval()、setTimeout()、clearInterval(),本文将围绕这三种函数的用法,来实现定时器的功能,需要的朋友可以过来参考下,喜欢的可以点波赞,或者关注一下本人,希望对大家有所帮助。 定时器的应用需求: 1.设定一个时间,当时间到达的时候执行函数————比如:倒计时跳转页面等等。 2.每隔一段时间重复执行某段函数————比如抢票软件,比如设定500毫秒就重复刷新一次页面等等。 倒计时跳转实现demo:
609 0
js 定时器用法详解——setTimeout()、setInterval()、clearTimeout()、clearInterval()
|
JavaScript
js中两种定时器,setTimeout和setInterval的区别
js中两种定时器,setTimeout和setInterval的区别
79 0
下一篇
无影云桌面