微信小程序抽签如何抽中(JavaScript实现班级抽签小程序)
类别:编程学习 浏览量:574
时间:2022-03-28 22:21:37 微信小程序抽签如何抽中
JavaScript实现班级抽签小程序本文实例为大家分享了JavaScript实现班级抽签小程序的具体代码,供大家参考,具体内容如下
项目展示
项目中假设一个班只有三十个人
html结构
<li class="outerContainer"> <li class="question">请问你要抽几个xx班的小宝贝呢?</li> <li class="number"> <input type="text" style="color: #999;" value="请输入需要的人数" onblur="if (this.value == '') {this.value = '请输入需要的人数';this.style.color = '#999';}" onfocus="if (this.value == '请输入需要的人数') {this.value = '';this.style.color = '#424242';}"> </li> <li class="btnWrapper"> <button>开始抽签</button> </li> <li class="viewli"></li> <li class="foot">制作者:chenyu-max</li> </li>
CSS层叠样式
.outerContainer { margin-top: 100px; } .question { margin-top: 30px; width: 100%; height: 50px; line-height: 50px; font-size: 25px; transition: all .3s linear; /* 颜色变化的时候,会有个渐变的效果 */ text-align: center; } .number { margin-top: 30px; display: block; left: 200px; text-align: center; } .number input { height: 30px; font-size: 20px; line-height: 30px; } .btnWrapper { margin-top: 30px; width: 100%; height: 30px; text-align: center; } .btnWrapper button { outline: none; color: rgb(233, 8, 8); cursor: pointer; border-radius: 15px; width: 100px; height: 25px; line-height: 19px; } .viewli { margin: 20px auto; width: 900px; height: 300px; text-align: center; font-size: 30px; line-height: 50px; border: 1px solid black; } .foot { margin: 0 auto; text-align: center; }
JS逻辑
获取dom元素
var input = document.getElementsByTagName('input')[0]; var viewli = document.getElementsByClassName('viewli')[0]; var btn = document.getElementsByTagName('button')[0]; var question = document.getElementsByClassName('question')[0];
其余变量
var arr = []; // 存放抽取处的学号 var count = 0; // 计数器,用以 question 的颜色修改
question的颜色变化
setInterval(function() { var temp = count % 6; switch (temp) { case 0: question.style.color = 'red'; break; case 1: question.style.color = 'green'; break; case 2: question.style.color = 'blue'; break; case 3: question.style.color = 'grey'; break; case 4: question.style.color = 'purple'; break; case 5: question.style.color = 'black'; break; default: break; } count++; }, 700);
抽奖逻辑
btn.onclick = function() { // 检查输入的内容是否是是1~30人 // 若是班级人数不止三十人,改成 input.value < 班级人数 + 1 var check = (function() { if (input.value > 0 && input.value < 31) { return true; } else { return false; } }()); // 如果输入的是正确的,那么进行抽签 if (check) { var num = input.value; arr = []; for (var i = 0; arr.length < num; i++) { // 生成1 ~ 30 的随机数 // 需要更改人数,直接修改 乘号后面的 30 未你们班需要的人数即可 var temp = Math.floor(Math.random() * 30 + 1); // 1 ~ 30 var flag = true; arr.forEach(function(value) { // 遍历数组,防止生成的随机数和已有的数字重复 if (value == temp) { flag = false; } }) if (flag) { arr.push(temp); } } // 将抽出的人数的学号进行升序排序 arr.sort(function(a, b) { return a - b; }) var str = arr.join(", "); viewli.innerHTML = " <span style='color : red'>恭喜以下小可爱/帅哥 被抽中!</span> </br> " + str; } else { // 若不是,则输出错误提示 // 人数可以修改 viewli.innerHTML = "<span style='color : red'>请输入正确的人数(1 ~ 30)哦</span>"; } }
增加功能
document.onkeydown = function(e) { // 摁下回车键 触发 btn 的onclick事件 if (e.keyCode == 13) { btn.onclick(); } }
全部代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>给xx班小宝贝来个抽签</title> <link rel="icon" href=""> <style> .outerContainer { margin-top: 100px; } .question { margin-top: 30px; width: 100%; height: 50px; line-height: 50px; font-size: 25px; transition: all .3s linear; text-align: center; } .number { margin-top: 30px; display: block; left: 200px; text-align: center; } .number input { height: 30px; font-size: 20px; line-height: 30px; } .btnWrapper { margin-top: 30px; width: 100%; height: 30px; text-align: center; } .btnWrapper button { outline: none; color: rgb(233, 8, 8); cursor: pointer; border-radius: 15px; width: 100px; height: 25px; line-height: 19px; } .viewli { margin: 20px auto; width: 900px; height: 300px; text-align: center; font-size: 30px; line-height: 50px; border: 1px solid black; } .foot { margin: 0 auto; text-align: center; } </style> </head> <body> <li class="outerContainer"> <li class="question">请问你要抽几个xx班的小宝贝呢?</li> <li class="number"> <input type="text" style="color: #999;" value="请输入需要的人数" onblur="if (this.value == '') {this.value = '请输入需要的人数';this.style.color = '#999';}" onfocus="if (this.value == '请输入需要的人数') {this.value = '';this.style.color = '#424242';}"> </li> <li class="btnWrapper"> <button>开始抽签</button> </li> <li class="viewli"></li> <li class="foot">制作者:chenyu-max</li> </li> <script> var input = document.getElementsByTagName('input')[0]; var viewli = document.getElementsByClassName('viewli')[0]; var btn = document.getElementsByTagName('button')[0]; var question = document.getElementsByClassName('question')[0]; var arr = []; // 存放抽取处的学号 var count = 0; // 计数器,用以question 的颜色修改器 setInterval(function() { var temp = count % 6; switch (temp) { case 0: question.style.color = 'red'; break; case 1: question.style.color = 'green'; break; case 2: question.style.color = 'blue'; break; case 3: question.style.color = 'grey'; break; case 4: question.style.color = 'purple'; break; case 5: question.style.color = 'black'; break; default: break; } count++; }, 700); document.onkeydown = function(e) { // 摁下回车键 触发 btn 的onclick事件 if (e.keyCode == 13) { btn.onclick(); } } btn.onclick = function() { // 检查输入的内容是否是是1~30人 // 若是班级人数不止三十人,改成 input.value < 班级人数 + 1 var check = (function() { if (input.value > 0 && input.value < 31) { return true; } else { return false; } }()); // 如果输入的是正确的,那么进行抽签 if (check) { var num = input.value; arr = []; for (var i = 0; arr.length < num; i++) { // 生成1 ~ 30 的随机数 // 需要更改人数,直接修改 乘号后面的 30 未你们班需要的人数即可 var temp = Math.floor(Math.random() * 30 + 1); // 1 ~ 30 var flag = true; arr.forEach(function(value) { // 遍历数组,防止生成的随机数和已有的数字重复 if (value == temp) { flag = false; } }) if (flag) { arr.push(temp); } } // 将抽出的人数的学号进行升序排序 arr.sort(function(a, b) { return a - b; }) var str = arr.join(", "); viewli.innerHTML = " <span style='color : red'>恭喜以下小可爱/帅哥 被抽中!</span> </br> " + str; } else { // 若不是,则输出错误提示 // 人数可以修改 viewli.innerHTML = "<span style='color : red'>请输入正确的人数(1 ~ 30)哦</span>"; } } </script> </body> </html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
您可能感兴趣
- lazyload延迟加载有什么影响(利用原生JS实现懒加载lazyLoad的三种方法总结)
- mysql 查询json(MySQL处理JSON常见函数的使用)
- mysql存储json的方式(MySQL中查询json格式的字段实例详解)
- lombok 代码行数(Lombok实现方式JSR-269)
- qt和js相互调用(QT与javascript交互数据的实现)
- sqlserver技术文档(sql server2016里面的json功能浅析)
- html5音频处理(recorder.js 基于Html5录音功能的实现)
- html5长图拖动(html5 拖拽及用 js 实现拖拽功能的示例代码)
- vue引用js库报错(Vue插件报错:Vue.js is detected on this page.问题解决)
- vue.js 怎么做插件(Vue.js实现音乐播放器)
- js时间日期处理
- vue.js入门教学第15讲(Vue.js 使用AntV X6的示例步骤)
- js 原生事件代理(如何利用原生JS实现触摸滑动监听事件)
- extjs 日期控件
- JS闭包的用法
- js判断浏览器的版本
- 智能手表兼容Windows和Android 无需充电挑战苹果(智能手表兼容Windows和Android)
- 一天一冲也算表 麦步,一款待机 21 天的智能手表体验评测(一天一冲也算表)
- 魅族智能手表充电座曝光 Type-C 接口,线座分离设计(魅族智能手表充电座曝光)
- 华为 Watch GT2 Pro 智能手表曝光,新增支持无线充电(华为WatchGT2)
- vivo首款智能手表来了 也有血氧饱和度监测,一次充电18天续航(vivo首款智能手表来了)
- 你知道 七夕 的真正含义吗(你知道七夕的真正含义吗)
热门推荐
- mysql的视图和临时表区别(MySQL 内存表和临时表的用法详解)
- mysql 死锁产生的原因和必要条件(Mysql查看死锁与解除死锁的深入讲解)
- 面试时不能说的离职理由
- 微信小程序获取手机信息(微信小程序获取手机号的踩坑记录)
- 前端用图片隐藏请求接口(前端实现打印图像功能)
- php网页浏览功能的具体实现(php实现网页上一页下一页翻页过程详解)
- react跳转页面并传参数(react 跳转后路由变了页面没刷新的解决方案)
- dedecms频道封面不能修改内容(DEDECMS内容页分页过多、过长问题最佳解决方案)
- mysqlexplain的用法(MySQL SHOW STATUS语句的使用)
- vue渲染数据的过程(Vue前端高效开发之列表渲染指令)