核心思想

  • 随机产生规定范围内的整数,然后再产生相同范围内的整数,两者相同时,则暂停。

所用知识

  • 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实现随机点名项目相关推荐

  1. 使用原生Js实现随机点名

    使用原生Js实现随机点名 最近学了一点前端内容,老师让用js设计一个班里的随机点名器.就尝试写了一个,具体实现效果如图: 实现代码: <!DOCTYPE html> <html la ...

  2. 原生JavaScript实现随机点名

    原生JavaScript实现随机点名 一,HTML代码 <div id="center"><div id="showname">O_O ...

  3. matlab运用函数随机点名,js实现随机点名功能

    本文实例为大家分享了js实现随机点名的具体代码,供大家参考,具体内容如下 效果: PS:在原来的效果中很快的,但是不知怎么的录下来就变得这么慢了 代码如下: 随机点名 .box{ width: 800 ...

  4. 原生JS开箱随机抽奖代码

    下载地址原生JS制作开箱随机抽奖小游戏,思路比较简单,十分实用!您可以随意定制抽奖奖品,点击开启按钮,箱子筛选随机产生中奖结果弹窗提示.ps:演示内容无任何含义. dd:

  5. 原生js实现随机雪花落下特效

    原生js随机生成不同数量.速度不同的雪花从屏幕上方落下,可修改各种配置生成自己的雪花特效. var snowStatus = false; var snow1 = './images/snow1.pn ...

  6. 【JS】随机点名小案例

    一.html <h2>随机点名</h2><div class="box"><span>名字是:</span><di ...

  7. 原生JS实现贪吃蛇——项目总结

    项目准备 项目展示图 建立新文件夹,新建出images CSS JS 三个文件夹,并在根目录下创建出index.html 将下列素材图片转到images文件中 接下来可以开始着手操作了 HTML结构 ...

  8. 小白的笨笨知识【用原生js实现一个倒计时项目】

    左侧输入为大于0的整数,单位是毫秒,右侧显示倒计时的时间 应用:Window setLenterval () 方法 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. ...

  9. 原生js实现大屏数字上下滚动效果,支持随机多位数字

    一文看懂大屏数字滚动 前言 一.html 二.js生成展示的元素 三.css实现样式 四.加入动画和定时器 前言 在大屏项目中经常需要实现那种数字上下滚动的效果,普通的数字随机滚动在UI组件(例如Vi ...

最新文章

  1. linux as 4 内核版本,Linux Redhat AS 4中编译内核与以往版本的区别(转载)
  2. Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)
  3. No module named ‘sklearn.utils.linear_assignment_‘
  4. Event Tracing for Windows
  5. CNN反向传播卷积核翻转
  6. 【原】简单shell练习(四)
  7. Bash教程之模式扩展
  8. nodejs中require的路径是一个文件夹时发生了什么
  9. mysql备份到带库_RMAN备份恢复——备份到带库的性能
  10. 企业拥抱开源之前,必须了解的七件事
  11. 在线涂鸦画板小程序源码
  12. javacript中的mvc设计模式
  13. C++面向对象编程之类的使用(基础案例学习)
  14. 使用WinRAR 进行解压war文件。
  15. win10怎么查看计算机用户名和密码,技术员详解win10系统查看电脑密码的详细方案...
  16. 并行磁共振成像——SENSE 敏感度编码成像
  17. 微信windows版_微信Windows版更新3.0:小程序可添加至桌面
  18. 同样磁盘数,不同raid级别的随机IO性能差异对比
  19. matlab char 转asc码,科学网—C语言与MATLAB对二进制文件与ASCII文件转换 - 张凌的博文...
  20. 超级淘为什么能在众多新零售导购平台崛起,并深受大家欢迎

热门文章

  1. mysql 数字处理方法_mysql中保留字段中的数字的处理方法。
  2. c语言转换为python语言_使用C语言中的数据缓冲区和NumPy数组之间的转换来为Python接口打包C程序的最佳方法是什么?...
  3. p70_域名解析系统DNS
  4. docker 容器和镜像的区别
  5. OpenGL基础34:帧缓冲(中)之附件
  6. Unity3D实践1.1:解决摄像机跟随中的视野遮挡问题
  7. bzoj 2427: [HAOI2010]软件安装(Trajan+树形DP)
  8. bzoj 3632: 外太空旅行(随机)
  9. bzoj 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场(DFS)
  10. 任意进制的转换(C,C++)itoa函数,strtol函数,bitset函数,oct函数,dec函数,hex函数