使用JS来实现随机点名的效果

简介: 使用JS来实现随机点名的效果

今天我们来做一个比较简单的JS点名效果,先把HTML和css给准备好,然后我们开始写JS结构


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 qs=document.querySelector('.qs')
const start=document.querySelector('.start')


然后我们获取开始按钮对象


addEventListene是监听事件的按钮,然后后面的click是事件,就是点击这个按钮就会执行下面的随机数的方法


这里我们在这里写一个timeid是指这个事件的按钮,所以我们要在首页去定义二个变量


let random=0
 let timerId=0


start.addEventListener('click',function(){
           timerId=setInterval(function(){
             random=parseInt(Math.random()*arr.length)
            qs.innerHTML=arr[random]
           }, 35)


第二步就是关闭按钮,我们筛选完之后需要关闭然后删除抽取的元素


const end=document.querySelector('.end')
        end.addEventListener('click',function(){
            clearInterval(timerId)
            //结束了,删掉当前抽取的元素
            arr.splice(random,1)
            console.log(arr)


arr.splice(random,1):意思就是这个事件结束了删掉这个随机数的一个元素


clearInterva:关闭定时器的意思,因为我们做一个点名事件是需要通过定时器来完成,这里的意思是停止的意思


最后我们在加一个步骤


if(arr.length===1){
            start.disabled=end.disabled=true
           }


这里的意思是这个素组如果只剩下一个元素,那么就会禁用开始和停止这两个按钮,如果换是flase就可以继续使用


接下来是源码


<!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>
        * {
            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;
        }
    </style>
</head>
<body>
    <h2>随机点名</h2>
    <div class="box">
        <span>名字是:</span>
        <div class="qs">这里显示姓名</div>
    </div>
    <div class="btns">
        <button class="start">开始</button>
        <button class="end">结束</button>
    </div>
    <script>
        // 数据数组
        let random=0
        let timerId=0
        const arr = ['马超', '黄忠', '赵云', '关羽', '张飞']
        //业务1开始模块按钮
        const qs=document.querySelector('.qs')
        const start=document.querySelector('.start')
        //1.1获取开始按钮对象
        start.addEventListener('click',function(){
            //1.获取随机数
           timerId=setInterval(function(){
             random=parseInt(Math.random()*arr.length)
            qs.innerHTML=arr[random]
           }, 35)
           if(arr.length===1){
            start.disabled=end.disabled=true
           }
        })
        //2.关闭按钮
        const end=document.querySelector('.end')
        end.addEventListener('click',function(){
            clearInterval(timerId)
            //结束了,删掉当前抽取的元素
            arr.splice(random,1)
            console.log(arr)
        })
    </script>
</body>
</html>
相关文章
JS+CSS随机点名详细介绍复制可用(可自己添加人名)
JS+CSS随机点名详细介绍复制可用(可自己添加人名)
|
4月前
HTML+CSS+JS实现网页随机点名
HTML+CSS+JS实现网页随机点名
|
JavaScript 前端开发
js点名器效果
点名器效果                    body{text-align:center;}            #showName{                font-size:20px;                color:red;          ...
944 0
|
2月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
27 0
|
2月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
77 0
|
5天前
|
JavaScript 前端开发 测试技术
学习JavaScript
【4月更文挑战第23天】学习JavaScript
11 1
|
13天前
|
JavaScript 前端开发 应用服务中间件
node.js之第一天学习
node.js之第一天学习
|
1月前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
1月前
|
JavaScript
Vue.js学习详细课程系列--共32节(4 / 6)
Vue.js学习详细课程系列--共32节(4 / 6)
35 0
|
1月前
|
前端开发 搜索推荐 JavaScript
编程笔记 html5&css&js 001 学习编程从网页开始
编程笔记 html5&css&js 001 学习编程从网页开始