zoukankan      html  css  js  c++  java
  • 原生JS实现随机点名项目

    核心思想

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

    所用知识

    • Math.random() * num: 产生从0到num的随机数
    • Math.floor(): 向下取整
    • 简单的DOM操作等

    技术扩展

    • 扩展人数
    • 添加停止键等

    效果

    代码如下

    • html:
    •  1 <div class="container">
       2         <section class="demo">
       3             <ul>
       4                 <li></li>
       5                 <li></li>
       6                 <li></li>
       7             </ul>
       8         </section>
       9         <section class="students"><ul></ul></section>
      10         <section class="buttonList">
      11             <ul>
      12                 <li><button type="button">随机选一个</button></li>
      13                 <li><button type="button">随机选两个</button></li>
      14                 <li><button type="button">随机选三个</button></li>
      15             </ul>
      16         </section>
      17     </div>
       1 <style type="text/css">
       2         * {
       3             margin: 0;
       4             padding: 0;
       5         }
       6         ul {
       7             list-style: none;
       8         }
       9         body {
      10             width: 100%;
      11             height: 100%;
      12             background: url("images/bg.jpg") no-repeat;
      13             background-size: cover;
      14         }
      15         button {
      16             border: none;
      17             background-color: transparent;
      18             color: #fff;
      19             font-size: 20px;
      20         }
      21         .container {
      22             width: 1200px;
      23             height: 700px;
      24             margin: 10px auto;
      25         }
      26         .container .demo, .container .buttonList {
      27             width: inherit;
      28             height: 25%;
      29         }
      30         .container .students {
      31             width: inherit;
      32             height: 50%;
      33         }
      34         .container .students li {
      35             margin-right: 50px;
      36             margin-bottom: 30px;
      37             text-align: center;
      38             border-radius: 10px;
      39             font-size: 20px;
      40             font-weight: bold;
      41         }
      42         .container .students li:nth-child(5n) {
      43             margin-right: 0;
      44         }
      45         .container .buttonList li button {
      46             float: left;
      47             width: 200px;
      48             height: 60px;
      49             background-color: #4caf5085;
      50             margin-right: 150px;
      51             text-align: center;
      52             line-height: 60px;
      53             border-radius: 10px;
      54             margin-top: 50px;
      55             font-weight: bold;
      56         }
      57         .container .buttonList li button:hover {
      58             background-color: #4caf50;
      59         }
      60         .container .buttonList li:nth-child(1) {
      61             margin-left: 150px;
      62         }
      63         .container .demo li {
      64             width: 200px;
      65             height: 150px;
      66             background-color: #4caf5085;
      67             float: left;
      68             margin-right: 150px;
      69             border-radius: 50%;
      70             margin-top: 10px;
      71             line-height: 150px;
      72             font-weight: bold;
      73             color: #fff;
      74             font-size: 60px;
      75             text-align: center;
      76         }
      77         .container .demo li:first-child {
      78             margin-left: 150px;
      79         }
      80     </style>
      <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);
  • 相关阅读:
    1. Dubbo原理解析-Dubbo内核实现之SPI简单介绍 (转)
    经典算法问题的java实现 (二)
    经典算法问题的java实现 (一)
    Bitmap的秘密
    Java Networking: UDP DatagramSocket (翻译)
    Java字节码浅析(二)
    Sql server 浅谈用户定义表类型
    Jquery 动态生成表单 并将表单数据 批量通过Ajax插入到数据库
    ASP.NET获取上传图片的大小
    ASP.Net大文件上传组件详解
  • 原文地址:https://www.cnblogs.com/yuer20180726/p/11151561.html
Copyright © 2011-2022 走看看