一个按钮在不同状态下来回切换

案例:一个随机点名系统

主要问题:怎样切换按钮的状态

解决办法:通过一个标志数字,数字为单数时按钮是“点名”状态,双数时为“停止状态”

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            background: pink;
        }
        .title{
            text-align: center;
        }
        .Time{
            width: 100%;
            height: 20px;
        }
        .time{
            
            float: right;
        }
        .Names{
            width: 800px;
            height: 200px;
            margin: 0 auto;
            padding: 20px;
            background: lightblue;
            display: flex;
            flex-wrap: wrap;
            /*justify-content: space-between;*/
            gap: 10px;
        }
        .name{
            text-align: center;
            width: 100px;
            height: 40px;
            line-height: 40px;
            font-size: 20px;
            background: #eee;
        }
        .red{
            background: red;
        }
        button{ 
            margin: 100px 45%;
            background: #eee;
            width: 10%;
            height: 40px;
            line-height: 40px;
            font-size: 20px;
        }
    </style>
</head>
<body>
    <h1 class="title">随机点名系统</h1>
    <div class="Time">
        <div class="time"></div>
    </div>
    <div class="Names">
        <div class="name">侯沁源</div>
        <div class="name">期洲杰</div>
        <div class="name">夏义军</div>
        <div class="name">周天本</div>
        <div class="name">王雷</div>
        <div class="name">格其尼玛</div>
        <div class="name">段志军</div>
        <div class="name">李威</div>
        <div class="name">张栩</div>
        <div class="name">王康旭</div>
        <div class="name">聂文豪</div>
        <div class="name">胡宇</div>
        <div class="name">张文媛</div>
        <div class="name">王娇</div>
        <div class="name">秦丹阳</div>
        <div class="name">李思</div>
        <div class="name">向莉</div>
        <div class="name">张鹏</div>
        <div class="name">韩孚洋</div>
        <div class="name">朱宇晨</div>
        <div class="name">崔英姿</div>
        <div class="name">王启龙</div>
        <div class="name">昊海鹏</div>
        <div class="name">陈若冰</div>
        <div class="name">吴松邈</div>
        <div class="name">于浩</div>
    </div>
    <button>点名</button>
    <script>
        var Time = document.querySelector('.time')
        var Year
        var Month
        var Day
        var Hour
        var Minute
        var Second
        setInterval(function(){
            var date = new Date()
            Year = date.getFullYear()
            Month = date.getMonth()
            Day = date.getDate()
            Hour = date.getHours()
            Minute = date.getMinutes()
            Second = date.getSeconds()
            Time.innerHTML = Year + '-' + Month + '-' + Day + ' ' + Hour + ':' + Minute + ':' + Second
        }, 1000)
        var students = document.querySelectorAll('.name')
        var Btn = document.querySelector('button')
        var index
        var timer
        var flag = 1 //通过flag单数还是双数可以知道是点击开始还是停止
        
        Btn.onclick = function(){
            if(flag % 2 == 1){
                students.forEach(function(item){
                    item.className = 'name'
                })
                Btn.innerHTML = '停止'
                timer = setInterval(function(){
                    index = Math.floor(Math.random() * students.length)
                            
                    students[index].classList.add('red')
                    setTimeout(function(){
                        students[index].classList.remove('red')
                    }, 100)   
                }, 200)
            }
            else{
                Btn.innerHTML = '点名' 
                clearInterval(timer)  
                students[index].classList.add('red')
            }
            flag++
        }      
    </script>
</body>
</html>

核心代码(script标签)

<script>
//日期自动更新
        var Time = document.querySelector('.time')
        var Year
        var Month
        var Day
        var Hour
        var Minute
        var Second
        setInterval(function(){
            var date = new Date()
            Year = date.getFullYear()
            Month = date.getMonth()
            Day = date.getDate()
            Hour = date.getHours()
            Minute = date.getMinutes()
            Second = date.getSeconds()
            Time.innerHTML = Year + '-' + Month + '-' + Day + ' ' + Hour + ':' + Minute + ':' + Second
        }, 1000)
        var students = document.querySelectorAll('.name')
        var Btn = document.querySelector('button')
        var index
        var timer
        var flag = 1 //通过flag单数还是双数可以知道是点击开始还是停止
//按钮切换
        Btn.onclick = function(){
            if(flag % 2 == 1){
                students.forEach(function(item){
                    item.className = 'name'
                })
                Btn.innerHTML = '停止'
                timer = setInterval(function(){
                    index = Math.floor(Math.random() * students.length)
                            
                    students[index].classList.add('red')
                    setTimeout(function(){
                        students[index].classList.remove('red')
                    }, 100)   
                }, 200)
            }
            else{
                Btn.innerHTML = '点名' 
                clearInterval(timer)  
                students[index].classList.add('red')
            }
            flag++
        }      
    </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值