JS:随机点名综合案例

需求:

1、随机点名

2、不能重复出现已经被抽取的名字

3、当剩下最后一个人的名字时不再抽取

部分html代码:

<!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>

 
</body>

</html>

JavaScript部分代码:

 <script>
    // 点击开始按钮随机抽取数组的一个数据,放到页面中
    // 点击结束按钮删除数组当前抽取的一个数据
    // 当抽取到最后一个数据的时候,两个按钮同时禁用,(写点开始里面,只剩最后一个数据不用抽了)
    // 核心:利用定时器快速展示,停止定时器结束展示

    const nameArr = ['zhang', 'liu', 'li', 'zhao']
    // 业务1开始按钮模块
    const qs = document.querySelector('.qs')
    const start = document.querySelector('.start')
    let n = 0
    let random = 0
    // 添加点击事件
    start.addEventListener('click', function () {
      // 随机数

      n = setInterval(function () {
        random = parseInt(Math.random() * nameArr.length)
        qs.innerHTML = nameArr[random]
      }, 50)

      // 如果数组里面只剩一个元素就不用再开始了
      if (nameArr.length === 1) {
        start.disabled = true
        end.disabled = true

      }

    })
    //获取结束按钮
    const end = document.querySelector('.end')


    end.addEventListener('click', function () {
      clearInterval(n)//删除定时器
      nameArr.splice(random, 1)//已经被抽到的名字删掉
    })

  </script>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值