原生JS实现随机点名项目
核心思想
- 随机产生规定范围内的整数,然后再产生相同范围内的整数,两者相同时,则暂停。
所用知识
- Math.random() * num: 产生从0到num的随机数
- Math.floor(): 向下取整
- 简单的DOM操作等
技术扩展
- 扩展人数
- 添加停止键等
效果
代码如下
- html:
<div class="container"><section class="demo"><ul><li></li><li></li><li></li></ul></section><section class="students"><ul></ul></section><section class="buttonList"><ul><li><button type="button">随机选一个</button></li><li><button type="button">随机选两个</button></li><li><button type="button">随机选三个</button></li></ul></section></div>
- css:
<style type="text/css">* {margin: 0;padding: 0;}ul {list-style: none;}body {width: 100%;height: 100%;background: url("images/bg.jpg") no-repeat;background-size: cover;}button {border: none;background-color: transparent;color: #fff;font-size: 20px;}.container {width: 1200px;height: 700px;margin: 10px auto;}.container .demo, .container .buttonList {width: inherit;height: 25%;}.container .students {width: inherit;height: 50%;}.container .students li {margin-right: 50px;margin-bottom: 30px;text-align: center;border-radius: 10px;font-size: 20px;font-weight: bold;}.container .students li:nth-child(5n) {margin-right: 0;}.container .buttonList li button {float: left;width: 200px;height: 60px;background-color: #4caf5085;margin-right: 150px;text-align: center;line-height: 60px;border-radius: 10px;margin-top: 50px;font-weight: bold;}.container .buttonList li button:hover {background-color: #4caf50;}.container .buttonList li:nth-child(1) {margin-left: 150px;}.container .demo li {width: 200px;height: 150px;background-color: #4caf5085;float: left;margin-right: 150px;border-radius: 50%;margin-top: 10px;line-height: 150px;font-weight: bold;color: #fff;font-size: 60px;text-align: center;}.container .demo li:first-child {margin-left: 150px;}</style>
- javascript:
<script type="text/javascript">var stuArray = ["小方", "小田", "小明", "小红", "小吕", "小于", "小美", "小绿", "李华", "小李", "小胡","小夏", "小徐", "小小", "小吴", "小陈", "小狗", "小许", "小熊", "小新"];var stuList = document.querySelector(".students").querySelector("ul");var buttonList = document.querySelectorAll("button");var demoList = document.querySelector(".demo").querySelectorAll("li");for (var i = 0; i < stuArray.length; i++) {var li = document.createElement("li");stuList.appendChild(li);li.innerHTML = stuArray[i];li.style.cssFloat = "left";li.style.width = 200 + "px";li.style.height = 60 + "px";li.style.backgroundColor = "#4caf5085";li.style.color = "#fff";li.style.lineHeight = 60 + "px";}var stuArrayList = stuList.querySelectorAll("li");function chooseOne () {for (var i = 0; i < stuArrayList.length; i++) {stuArrayList[i].style.background = "#4caf5085";}for (var i = 0; i < demoList.length; i++) {demoList[i].innerHTML = "";}var interId = setInterval(function () {var x = Math.floor(Math.random() * stuArray.length);stuArrayList[x].style.backgroundColor = "green";demoList[1].innerHTML = stuArrayList[x].innerHTML;var timeId = setTimeout(function () {stuArrayList[x].style.backgroundColor = "#4caf5085";}, 100);var y = Math.floor(Math.random() * stuArray.length);if (y == x) {clearTimeout(timeId);clearInterval(interId);stuArrayList[y].style.backgroundColor = "green";}}, 100);}function chooseTwo () {for (var i = 0; i < stuArrayList.length; i++) {stuArrayList[i].style.background = "#4caf5085";}for (var i = 0; i < demoList.length; i++) {demoList[i].innerHTML = "";}var interId = setInterval(function () {do {var x1 = Math.floor(Math.random() * stuArray.length);var x2 = Math.floor(Math.random() * stuArray.length);} while (x1 == x2);stuArrayList[x1].style.backgroundColor = "green";stuArrayList[x2].style.backgroundColor = "green";demoList[0].innerHTML = stuArrayList[x1].innerHTML;demoList[2].innerHTML = stuArrayList[x2].innerHTML;var timeId = setTimeout(function () {stuArrayList[x1].style.backgroundColor = "#4caf5085";stuArrayList[x2].style.backgroundColor = "#4caf5085";}, 100);var y1 = Math.floor(Math.random() * stuArray.length);var y2 = Math.floor(Math.random() * stuArray.length);if ((y1 == x1 && y2 == x2) || (y1 == x2 && y2 == x1)) {clearTimeout(timeId);clearInterval(interId);stuArrayList[x1].style.backgroundColor = "green";stuArrayList[x2].style.backgroundColor = "green";}}, 100);}function chooseThree () {for (var i = 0; i < stuArrayList.length; i++) {stuArrayList[i].style.background = "#4caf5085";}for (var i = 0; i < demoList.length; i++) {demoList[i].innerHTML = "";}var interId = setInterval(function () {do {var x1 = Math.floor(Math.random() * stuArray.length);var x2 = Math.floor(Math.random() * stuArray.length);var x3 = Math.floor(Math.random() * stuArray.length);} while (x1 == x2 || x2 == x3 || x1 == x3);stuArrayList[x1].style.backgroundColor = "green";stuArrayList[x2].style.backgroundColor = "green";stuArrayList[x3].style.backgroundColor = "green";demoList[0].innerHTML = stuArrayList[x1].innerHTML;demoList[1].innerHTML = stuArrayList[x2].innerHTML;demoList[2].innerHTML = stuArrayList[x3].innerHTML;var timeId = setTimeout(function () {stuArrayList[x1].style.backgroundColor = "#4caf5085";stuArrayList[x2].style.backgroundColor = "#4caf5085";stuArrayList[x3].style.backgroundColor = "#4caf5085";}, 100);var y1 = Math.floor(Math.random() * stuArray.length);var y2 = Math.floor(Math.random() * stuArray.length);var y3 = Math.floor(Math.random() * stuArray.length);if ((x1 == y1 && x2 == y2) || (x1 == y2 && x2 == y1)) {clearTimeout(timeId);clearInterval(interId);stuArrayList[x1].style.backgroundColor = "green";stuArrayList[x2].style.backgroundColor = "green";stuArrayList[x3].style.backgroundColor = "green";}}, 100);}buttonList[0].addEventListener("click", function () {chooseOne()}, false);buttonList[1].addEventListener("click", function () {chooseTwo()}, false);buttonList[2].addEventListener("click", function () {chooseThree()}, false);
转载于:https://www.cnblogs.com/duxiu-fang/p/10795526.html
原生JS实现随机点名项目相关推荐
- 使用原生Js实现随机点名
使用原生Js实现随机点名 最近学了一点前端内容,老师让用js设计一个班里的随机点名器.就尝试写了一个,具体实现效果如图: 实现代码: <!DOCTYPE html> <html la ...
- 原生JavaScript实现随机点名
原生JavaScript实现随机点名 一,HTML代码 <div id="center"><div id="showname">O_O ...
- matlab运用函数随机点名,js实现随机点名功能
本文实例为大家分享了js实现随机点名的具体代码,供大家参考,具体内容如下 效果: PS:在原来的效果中很快的,但是不知怎么的录下来就变得这么慢了 代码如下: 随机点名 .box{ width: 800 ...
- 原生JS开箱随机抽奖代码
下载地址原生JS制作开箱随机抽奖小游戏,思路比较简单,十分实用!您可以随意定制抽奖奖品,点击开启按钮,箱子筛选随机产生中奖结果弹窗提示.ps:演示内容无任何含义. dd:
- 原生js实现随机雪花落下特效
原生js随机生成不同数量.速度不同的雪花从屏幕上方落下,可修改各种配置生成自己的雪花特效. var snowStatus = false; var snow1 = './images/snow1.pn ...
- 【JS】随机点名小案例
一.html <h2>随机点名</h2><div class="box"><span>名字是:</span><di ...
- 原生JS实现贪吃蛇——项目总结
项目准备 项目展示图 建立新文件夹,新建出images CSS JS 三个文件夹,并在根目录下创建出index.html 将下列素材图片转到images文件中 接下来可以开始着手操作了 HTML结构 ...
- 小白的笨笨知识【用原生js实现一个倒计时项目】
左侧输入为大于0的整数,单位是毫秒,右侧显示倒计时的时间 应用:Window setLenterval () 方法 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. ...
- 原生js实现大屏数字上下滚动效果,支持随机多位数字
一文看懂大屏数字滚动 前言 一.html 二.js生成展示的元素 三.css实现样式 四.加入动画和定时器 前言 在大屏项目中经常需要实现那种数字上下滚动的效果,普通的数字随机滚动在UI组件(例如Vi ...
最新文章
- linux as 4 内核版本,Linux Redhat AS 4中编译内核与以往版本的区别(转载)
- Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)
- No module named ‘sklearn.utils.linear_assignment_‘
- Event Tracing for Windows
- CNN反向传播卷积核翻转
- 【原】简单shell练习(四)
- Bash教程之模式扩展
- nodejs中require的路径是一个文件夹时发生了什么
- mysql备份到带库_RMAN备份恢复——备份到带库的性能
- 企业拥抱开源之前,必须了解的七件事
- 在线涂鸦画板小程序源码
- javacript中的mvc设计模式
- C++面向对象编程之类的使用(基础案例学习)
- 使用WinRAR 进行解压war文件。
- win10怎么查看计算机用户名和密码,技术员详解win10系统查看电脑密码的详细方案...
- 并行磁共振成像——SENSE 敏感度编码成像
- 微信windows版_微信Windows版更新3.0:小程序可添加至桌面
- 同样磁盘数,不同raid级别的随机IO性能差异对比
- matlab char 转asc码,科学网—C语言与MATLAB对二进制文件与ASCII文件转换 - 张凌的博文...
- 超级淘为什么能在众多新零售导购平台崛起,并深受大家欢迎
热门文章
- mysql 数字处理方法_mysql中保留字段中的数字的处理方法。
- c语言转换为python语言_使用C语言中的数据缓冲区和NumPy数组之间的转换来为Python接口打包C程序的最佳方法是什么?...
- p70_域名解析系统DNS
- docker 容器和镜像的区别
- OpenGL基础34:帧缓冲(中)之附件
- Unity3D实践1.1:解决摄像机跟随中的视野遮挡问题
- bzoj 2427: [HAOI2010]软件安装(Trajan+树形DP)
- bzoj 3632: 外太空旅行(随机)
- bzoj 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场(DFS)
- 任意进制的转换(C,C++)itoa函数,strtol函数,bitset函数,oct函数,dec函数,hex函数