利用间歇函数(定时器)制作一个随机点名案例。

HTML

<h2>随机点名</h2>
    <div class="box">
        <span>名字是:</span>
        <div class="qs">这里显示姓名</div>
    </div>
    <div class="btns">
        <button class="start">开始</button>
        <button class="end">结束</button>
    </div>

CSS

 * {
            margin: 0;
            padding: 0;
        }

        h2 {
            text-align: center;
        }

        .box {
            width: 600px;
            margin: 50px auto;
            display: flex;
            font-size: 25px;
            line-height: 40px;
        }

        .qs {

            width: 450px;
            height: 40px;
            color: red;

        }

        .btns {
            text-align: center;
        }

        .btns button {
            width: 120px;
            height: 35px;
            margin: 0 50px;
        }

JS

// 数据数组
        const arr = ['马超', '黄忠', '赵云', '关羽', '张飞']
        //获取按钮
        const start = document.querySelector('.start')
        const end = document.querySelector('.end')
        const qs = document.querySelector('.qs')

        let random = 0
        let timerId = 0
        //点击开始触发的事件
        start.addEventListener('click',function(){
            //定义一个定时器
            timerId = setInterval(function(){
            //生成随机数字
            random = parseInt(Math.random() * arr.length)
            //将随机到的名字放到类里面
            qs.innerHTML = arr[random]
            },100)
            //开始按钮禁用
            start.disabled = true
            //结束按钮启用
            end.disabled = false
            //如果数组里面只剩一个,禁用开始按钮
            if(arr.length === 1){
            //启用按钮禁用
            start.disabled = true
            //结束按钮启用
            end.disabled = true
            }
        })
        // 结束按钮事件
        end.addEventListener('click',function(){
            //清除定时器
            clearInterval(timerId)
            //开始按钮启用
            start.disabled = false
            //结束按钮禁用
            end.disabled = true
            //将随机到的元素删除,防止下次随机时出现重复
            arr.splice(random,1)
            console.log(arr)
        })

效果

动画4.gif

最后修改:2022 年 08 月 30 日
如果觉得我的文章对你有用,请随意赞赏