js 实现课堂点名

上机课老师点名(就是抽奖),js 实现

偷懒直接粘代码,实现效果贴张静态图吧(哈哈,我的学生都是美女)
在这里插入图片描述

  • html
<!-- 上机课老师点击选择按钮,从学生座位表中抽取一名同学 -->
<div class="container" id="room">
  <div class="cell">邱淑贞</div>
</div>
<div class="btn">
  <button onclick="doClick()">点名</button>
</div>
  • js 实现
var students = 
  [
     '赵丽颖', '刘亦菲', '鞠婧祎', '孙俪', '宋晓英', 
     '赵静怡', '岳红', '潘虹', '沈丹萍', '张凯丽',
     '周彦宏', '刘丹', '傅艺伟', '苏瑾', '李玲玉',
     '龚雪', '韦唯', '刘怡君', '陈冲', '胡静',
     '白灵', '焦媛', '何晴', '姜培琳', '王希维',
     '王宇婕', '刘亦菲', '杨澜', '田海蓉', '宋丹丹',
     '冯婧', '乐珈彤', '郝蕾', '宋祖英', '刘涛',
     '薛佳凝', '林熙', '黄圣依', '杨若兮', '刘晓庆',
     '李媛媛', '眉佳', '邓婕', '彭心怡', '苗圃',
     '吕燕', '杨幂', '胡可', '牛莉', '鲍蕾'
   ];
 var str = '';
 students.forEach(name => {
   str += `<div class="cell">${name}</div>`;
 });
 document.getElementById('room').innerHTML = str;

 var indexOld = null;
 var timer;
 var times = 0; // 计数器

 function doClick() {
   // 再次点击时
   clearInterval(timer);
   times = 0;
   // 定时器
   timer = setInterval(check, 200);
 }

 // 选择逻辑
 function check() {
   var index = random(0, 49);
   indexOld  !== null ? getChooseMan(indexOld).classList.remove('checked') : '';
   getChooseMan(index).classList.add('checked');
   indexOld = index;
   
   ++times;
   if (times === 10) {
     clearInterval(timer);
     times = 0;
   }
   console.log('person : ', students[index]);
   console.log('times : ', times);
 }

 // 获取选中的 dom 
 function getChooseMan(index) {
   return document.getElementsByClassName('cell')[index];
 }

 // 生成随机数
 function random(min, max) {
   return parseInt(min + (max + 1 - min) * Math.random());
 }
  • 附上css
html, body{
  min-width: 1024px;
   margin: 0;
   padding: 0;
   box-sizing: border-box;
   background: #000;
   color: #b6f5d0;
 }
 .container{
   width: 80%;
   margin: 0 auto;
 }
 .cell{
   width: 80px;
   height: 40px;
   line-height: 40px;
   font-size: 20px;
   text-align: center;
   float: left;
   margin: 20px 20px;
 }
 .btn{
   width: 80%;
   margin: 0 auto;
   text-align: center;
 }
 .btn button{
   margin: 20px 0 50px 0;
   width: 100px;
   border-radius: 10px;
   height: 40px;
   letter-spacing: 5px;
   font-size: 14px;
   outline: none;
 }
 .checked{
   background: #ccc;
   color: #000;
   font-size: 16px;
   font-weight: bold;
 }

不周之处请教之,思想需要碰撞,知识需要交流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值