代码如下:
- <!DOCTYPE html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- <style>
- #crateNum {
- display: flex;
- justify-content: center;
- }
-
- #ssqStyle,
- #dltStyle {
- border: 1px solid #ccc;
- padding: 10px;
- background: rgba(0, 0, 0, .5);
- }
-
- #ssqStyle>p,
- #dltStyle>p {
- font-size: 30px;
- text-align: center;
- font-weight: bold;
- }
- #ssqLIst,#dltList{
- height: 300px;
- padding: 50px;
- box-sizing: border-box;
- text-align: center;
- color: #fff;
- }
- </style>
- </head>
-
- <body>
- <div id="crateNum">
- <div id="ssqStyle">
- <p>双色球</p>
- <button onclick="creatNum('ssq',1)">随机生成1组</button>
- <button onclick="creatNum('ssq',5)">随机生成5组</button>
- <button onclick="creatNum('ssq',10)">随机生成10组</button>
- <hr>
- <ul id="ssqLIst">
- </ul>
- </div>
- <div id="dltStyle">
- <p>大乐透</p>
- <button onclick="creatNum('dlt',1)">随机生成1组</button>
- <button onclick="creatNum('dlt',5)">随机生成5组</button>
- <button onclick="creatNum('dlt',10)">随机生成10组</button>
- <hr>
- <ul id="dltList">
- </ul>
- </div>
- </div>
- </body>
- <script>
- //定义红篮球数组
- let ssqArr = [], dltArr = [];
-
- //参数说明
- // classify:要产生双色球数据还是大乐透数据,因为用的一个方法,所以要区分一下
- // ssq:双色球;
- // dlt:大乐透
- // num:产生多少组
- function creatNum(classify, num) {
- // 定义前后区个数
- let qq = 0, //前区个数--红球数量
- hq = 0, //后区个数--篮球数量
- qqScope = 0, //前区每个球的数值范围---双色球是1-33,大乐透是1-35
- hqScope = 0; //后区每个球的数值范围---双色球是1-16,大乐透是1-12
- // 判断时ssq还是dlt
- if (classify == 'ssq') {
- this.ssqArr = []; //将双色球数据列表清空(避免多次点击数据叠加)
- qq = 6; //双色球的前区(红球)个数为6个
- hq = 1; //双色球的后区(蓝球)个数为1个
- qqScope = 33; //双色球前区(红球)数值范围是1-33
- hqScope = 16; //双色球后区(蓝球)数值范围是1-16
- } else if (classify == 'dlt') {
- this.dltArr = []//将大乐透数据列表清空(避免多次点击数据叠加)
- qq = 5; //大乐透的前区(红球)个数为5个
- hq = 2; //大乐透的后区(蓝球)个数为2个
- qqScope = 35; //大乐透前区(红球)数值范围是1-35
- hqScope = 12; //大乐透后区(蓝球)数值范围是1-12
- }
-
- // 外层循环表示需要产生多少组随机数字
- for (let i = 0; i < num; i++) {
- //定义前后区(红蓝球)数组
- let redBall = [];
- let blueBall = [];
- let blueBallNum = '';
- //获取一组前区(红球)数据
- for (let j = 0; j < qq; j++) {
- let redBallNum = this.random(1, qqScope);
- //位数补齐--0-9不足两位的在前面补“0”
- redBallNum = redBallNum.toString().padStart(2, "0");
- //判重添加
- //如果不存在(false),就添加
- if (redBall.indexOf(redBallNum) == -1) {
- redBall.push(redBallNum);
- } else {
- //反之j--重新循环
- j--;
- }
- }
- //前区数字从大到小排序
- redBall.sort((a, b) => {
- return a - b
- })
- //获取一组后区(蓝球)数据
- for (let k = 0; k < hq; k++) {
- let blueBallNum = this.random(1, hqScope);
- //位数补齐--0-9不足两位的在前面补“0”
- blueBallNum = blueBallNum.toString().padStart(2, "0");
- //判重添加
- //如果不存在(false),就添加
- if (blueBall.indexOf(blueBallNum) == -1) {
- blueBall.push(blueBallNum);
- } else {
- //反之k--重新循环
- k--;
- }
- }
- //后区数字从大到小排序
- blueBall.sort((a, b) => {
- return a - b
- })
- if (classify == 'ssq') {
- //合并添加到ssqArr(双色球数据列表)中
- this.ssqArr[i] = (redBall.toString() + "-----" + blueBall.toString());
- } else if (classify == 'dlt') {
- //合并添加到dltArr(大乐透数据列表)中
- this.dltArr[i] = (redBall.toString() + "-----" + blueBall.toString());
- }
- }
-
- //操作标签部分
-
- // 获取ul标签,方便后面往里填数据
- let ssqLIst = document.querySelector('#ssqLIst')
- let dltList = document.querySelector('#dltList')
-
- // 判断选的随机产生双色球数据还是大乐透数据
- if (classify == 'ssq') {
- // 清空原先的内容
- ssqLIst.innerHTML = ''
- //将数据循环添加到dom中
- for (let s = 0; s < this.ssqArr.length; s++) {
- var li = document.createElement("li");
- li.innerText = this.ssqArr[s];
- ssqLIst.appendChild(li);
- }
- } else if (classify == 'dlt') {
- // 清空原先的内容
- dltList.innerHTML = ''
- for (let d = 0; d < this.dltArr.length; d++) {
- var li = document.createElement("li");
- li.innerText = this.dltArr[d];
- dltList.appendChild(li);
- }
- }
-
- }
- //获取随机数
- function random(min, max) {
- //Math.random()获取0-1中的随机数
- //随机数需要取整parseInt(),向下取整 Math.floor()
- return parseInt(Math.random() * (max - min) + min);
- }
- </script>
-
- </html>
效果如下:
没咋写过原生,可能里面的方法有待优化。