使用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随机点名详细介绍复制可用(可自己添加人名)
|
11月前
HTML+CSS+JS实现网页随机点名
HTML+CSS+JS实现网页随机点名
|
JavaScript 前端开发
js点名器效果
点名器效果                    body{text-align:center;}            #showName{                font-size:20px;                color:red;          ...
965 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
95 2
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
122 4
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
81 4
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物交易平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物交易平台附带文章源码部署视频讲解等
73 4
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的大学生入伍人员管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的大学生入伍人员管理系统附带文章源码部署视频讲解等
92 4
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp宿舍管理系统的附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp宿舍管理系统的附带文章源码部署视频讲解等
84 3
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的家政平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的家政平台附带文章源码部署视频讲解等
62 3