|
43 | 43 | font-size: 20px; |
44 | 44 | font-weight: bold; |
45 | 45 | } |
| 46 | + |
| 47 | + .op-btns { |
| 48 | + margin-top: 20px; |
| 49 | + display: flex; |
| 50 | + } |
| 51 | + |
| 52 | + .again-btn { |
| 53 | + display: inline-block; |
| 54 | + padding: 10px 40px; |
| 55 | + background-color: #3575cf; |
| 56 | + color: azure; |
| 57 | + border-radius: 50px; |
| 58 | + cursor: pointer; |
| 59 | + user-select: none; |
| 60 | + } |
| 61 | + |
| 62 | + .copy-btn { |
| 63 | + display: inline-block; |
| 64 | + padding: 10px 40px; |
| 65 | + background-color: #42cf35; |
| 66 | + color: azure; |
| 67 | + border-radius: 50px; |
| 68 | + cursor: pointer; |
| 69 | + user-select: none; |
| 70 | + margin-left: 10px; |
| 71 | + } |
46 | 72 | </style> |
47 | 73 | </head> |
48 | 74 |
|
49 | 75 | <body> |
50 | 76 | <div class="union-lotto"> |
51 | 77 | </div> |
52 | | - |
| 78 | + <div class="op-btns"> |
| 79 | + <div class="again-btn">再来一次</div> |
| 80 | + <div class="copy-btn">复制号码</div> |
| 81 | + </div> |
53 | 82 |
|
54 | 83 |
|
55 | 84 | <script type="module"> |
56 | 85 | let unionLottoDOM = document.querySelector('.union-lotto') |
57 | | - |
| 86 | + let againBtnDOM = document.querySelector(".again-btn") |
| 87 | + let copyBtnDOM = document.querySelector(".copy-btn") |
58 | 88 | import { Randoms } from "https://gcore.jsdelivr.net/npm/@3r/tool/lib/randoms.js"; |
59 | 89 |
|
60 | | - for (let i = 0; i < 5; i++) { |
61 | | - const groupItemDOM = document.createElement('div') |
62 | | - groupItemDOM.classList.add('group-item') |
63 | | - let redDict = {} |
64 | | - let redList = [] |
65 | | - |
66 | | - for (let j = 0; j < 6; j++) { |
67 | | - let redNum = Randoms.int(1, 34) |
68 | | - if (redDict[redNum]) { |
69 | | - j--; |
70 | | - continue; |
| 90 | + /** |
| 91 | + * 复制到剪贴板 |
| 92 | + */ |
| 93 | + function copyToClipboard(value) { |
| 94 | + let input = |
| 95 | + document.querySelector(".copy-input") || |
| 96 | + document.createElement("textarea"); |
| 97 | + input.className = "copy-input"; |
| 98 | + input.value = value; |
| 99 | + input.style = `position: fixed;top: -100%;`; |
| 100 | + document.body.append(input); |
| 101 | + input.select(); |
| 102 | + document.execCommand("copy"); |
| 103 | + } |
| 104 | + |
| 105 | + function random5group() { |
| 106 | + unionLottoDOM.innerHTML = '' |
| 107 | + for (let i = 0; i < 5; i++) { |
| 108 | + const groupItemDOM = document.createElement('div') |
| 109 | + groupItemDOM.classList.add('group-item') |
| 110 | + let redDict = {} |
| 111 | + let redList = [] |
| 112 | + |
| 113 | + for (let j = 0; j < 6; j++) { |
| 114 | + let redNum = Randoms.int(1, 34) |
| 115 | + if (redDict[redNum]) { |
| 116 | + j--; |
| 117 | + continue; |
| 118 | + } |
| 119 | + redDict[redNum] = true; |
| 120 | + redList.push(redNum) |
71 | 121 | } |
72 | | - redDict[redNum] = true; |
73 | | - redList.push(redNum) |
| 122 | + |
| 123 | + let blueNum = Randoms.int(1, 17) |
| 124 | + redList.sort((a, b) => a - b) |
| 125 | + redList.forEach(red => { |
| 126 | + const redBallDOM = document.createElement('div') |
| 127 | + redBallDOM.classList.add('red-ball') |
| 128 | + redBallDOM.textContent = String(red).padStart(2, '0') |
| 129 | + groupItemDOM.appendChild(redBallDOM) |
| 130 | + }) |
| 131 | + |
| 132 | + const blueBallDOM = document.createElement('div') |
| 133 | + blueBallDOM.classList.add('blue-ball') |
| 134 | + blueBallDOM.textContent = String(blueNum).padStart(2, '0') |
| 135 | + groupItemDOM.appendChild(blueBallDOM) |
| 136 | + unionLottoDOM.appendChild(groupItemDOM) |
74 | 137 | } |
75 | 138 |
|
76 | | - let blueNum = Randoms.int(1, 17) |
77 | | - redList.sort((a, b) => a - b) |
78 | | - redList.forEach(red => { |
79 | | - const redBallDOM = document.createElement('div') |
80 | | - redBallDOM.classList.add('red-ball') |
81 | | - redBallDOM.textContent = red |
82 | | - groupItemDOM.appendChild(redBallDOM) |
| 139 | + } |
| 140 | + |
| 141 | + function copy5group() { |
| 142 | + let str = `双色球` |
| 143 | + let groupItemDOM = document.querySelectorAll('.group-item') |
| 144 | + groupItemDOM.forEach((item) => { |
| 145 | + let redBallDOM = item.querySelectorAll('.red-ball') |
| 146 | + let blueBallDOM = item.querySelectorAll('.blue-ball') |
| 147 | + str += '\n' |
| 148 | + |
| 149 | + let redBall = [] |
| 150 | + let blueBall = [] |
| 151 | + redBallDOM.forEach(item => redBall.push(item.textContent)) |
| 152 | + blueBallDOM.forEach(item => blueBall.push(item.textContent)) |
| 153 | + |
| 154 | + str += redBall.join('、') + ' + ' + blueBall.join('、') |
83 | 155 | }) |
84 | 156 |
|
85 | | - const blueBallDOM = document.createElement('div') |
86 | | - blueBallDOM.classList.add('blue-ball') |
87 | | - blueBallDOM.textContent = blueNum |
88 | | - groupItemDOM.appendChild(blueBallDOM) |
89 | | - unionLottoDOM.appendChild(groupItemDOM) |
| 157 | + copyToClipboard(str) |
90 | 158 | } |
91 | 159 |
|
| 160 | + random5group() |
| 161 | + |
| 162 | + |
| 163 | + againBtnDOM.addEventListener('click', random5group) |
| 164 | + copyBtnDOM.addEventListener('click', copy5group) |
92 | 165 | </script> |
93 | 166 |
|
94 | 167 |
|
|
0 commit comments