JS动效--双色球

Posted ATnTent!on

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS动效--双色球相关的知识,希望对你有一定的参考价值。

主要思路 

前面六个为红色球,选号范围01-33,最后一位是蓝色球,选号范围01-16。

蓝球数字有可能跟红色球一样 

所以 写了一个生成六位不重复的数组 

让后通过innerhtml赋值给className相对应的div里面

 

i  控制 模拟转动的时间 在if判断中 数字越大 转动时间越久 

最后就会产生一组对应的随机数

 

主要是练习创建DOM

然后用innerHTML或者 innerText 来添加文本内容

 

  1 <head>
  2     <meta charset="UTF-8">
  3     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  4     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  5     <title>双色球!!!</title>
  6 </head>
  7 <style>
  8     .cont {
  9         width: 700px;
 10         height: 100px;
 11         border: solid;
 12         display: flex;
 13         justify-content: space-around;
 14         align-items: center;
 15     }
 16 
 17     .cont div {
 18         width: 75px;
 19         height: 75px;
 20         border-radius: 50%;
 21         border: 1px solid;
 22         background-color: red;
 23         text-align: center;
 24         line-height: 75px;
 25     }
 26 
 27     #ball7 {
 28         background-color: blue;
 29     }
 30 </style>
 31 
 32 <body>
 33     <div class="cont">
 34         <div class="ball1"></div>
 35         <div class="ball2"></div>
 36         <div class="ball3"></div>
 37         <div class="ball4"></div>
 38         <div class="ball5"></div>
 39         <div class="ball6"></div>
 40         <div id="ball7"></div>
 41     </div>
 42     <button id="refresh">点击生成</button>
 43     <script>
 44         let isRepeat = function (arr) {
 45             for (let i = 0; i < arr.length; i++) {
 46                 for (let j = i + 1; j < arr.length; j++) {
 47                     if (arr[i] == arr[j]) {
 48                         return 1;   //有重复值
 49                     }
 50                 }
 51             }
 52             return 0; //无重复值
 53         }
 54         let randomNum = function () {
 55             let num;
 56             let comNum = [];//用于装6个随机数
 57             while (1) {
 58                 comNum = [];//重要!必须重新初始化数组,否则会造成死循环
 59                 for (let i = 0; i < 6; i++) {
 60                     num = Math.floor(Math.random() * 34 + 1);
 61                     comNum.push(num);
 62                 }
 63                 //在不重复的情况下才返回该数组
 64                 if (!isRepeat(comNum)) {
 65                     return comNum;
 66                 }
 67             }
 68         }
 69         let red1 = document.getElementsByClassName("ball1")[0];
 70         let red2 = document.getElementsByClassName("ball2")[0];
 71         let red3 = document.getElementsByClassName("ball3")[0];
 72         let red4 = document.getElementsByClassName("ball4")[0];
 73         let red5 = document.getElementsByClassName("ball5")[0];
 74         let red6 = document.getElementsByClassName("ball6")[0];
 75         let blue = document.getElementById("ball7");
 76         let startBtn = document.getElementById("refresh");
 77         // let endBtn = document.getElementById("end")
 78         let stopTimer;
 79         startBtn.onclick = function () {
 80             var i=0;
 81             stopTimer = setInterval(function () {
 82                 let arr = randomNum();
 83                 i++;
 84                 console.log(i);
 85                 red1.innerText = arr[0];
 86                 red2.innerHTML = arr[1];
 87                 red3.innerHTML = arr[2];
 88                 red4.innerHTML = arr[3];
 89                 red5.innerHTML = arr[4];
 90                 red6.innerHTML = arr[5];
 91                 if(i==30){
 92                 clearInterval(stopTimer);
 93                 }
 94                 blue.innerHTML =  Math.floor(Math.random() * 17 + 1);
 95             }, 10);
 96             
 97         }
 98     </script>
 99 </body>
100 
101 </html>

 

以上是关于JS动效--双色球的主要内容,如果未能解决你的问题,请参考以下文章

CSS动效实战(纯CSS与JS动效)02 flex 布局实战(仿 JD 及 gitCode 布局)及 media 自适应初探

CSS动效实战(纯CSS与JS动效)02 flex 布局实战(仿 JD 及 gitCode 布局)及 media 自适应初探

Js模拟重力场Js动效

Js模拟重力场Js动效

Js模拟重力场Js动效

Js模拟重力场Js动效