forked from shiro-shio/Roto
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
126 lines (109 loc) · 4.52 KB
/
script.js
File metadata and controls
126 lines (109 loc) · 4.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
let currentLottoNumbers = [];
let currentCount = 0;
let lottoHistory = [];
let maxNumbers;
let numberRange;
function setTheme(theme) {
localStorage.setItem('theme', theme);
document.getElementById('darkTheme').disabled = (theme !== 'dark');
}
window.addEventListener('load', () => {
let preferredTheme = localStorage.getItem('theme');
let darkQuery = window.matchMedia('(prefers-color-scheme: dark)');
if (preferredTheme == null) {
preferredTheme = darkQuery.matches ? 'dark' : 'light';
}
darkQuery.addEventListener('change', function (e) {
setTheme(e.matches ? 'dark' : 'light');
});
setTheme(preferredTheme);
})
document.getElementById('drawButton').addEventListener('click', function() {
maxNumbers = parseInt(document.getElementById('maxNumbers').value);
numberRange = parseInt(document.getElementById('numberRange').value);
// 如果是新的一輪開始,重新生成數字並重置計數器
if (currentCount === 0) {
currentLottoNumbers = generateLottoNumbers(maxNumbers, numberRange);
lottoHistory.push(currentLottoNumbers.slice()); // 深拷貝數字到歷史記錄
}
if (currentCount < maxNumbers) {
displayNextNumber();
currentCount++;
} else {
// 當前輪數字已全部顯示,準備下一輪
currentCount = 0;
updateHistory();
}
});
document.getElementById('clearHistory').addEventListener('click', function() {
lottoHistory = [];
updateHistory();
document.getElementById('results').innerHTML = '';
// 重置準備下一輪
currentCount = 0;
});
document.getElementById('themeToggle').addEventListener('click', () => {
let preferredTheme = localStorage.getItem('theme');
if (preferredTheme === 'dark') {
setTheme('light');
}
if (preferredTheme === 'light') {
setTheme('dark');
}
const iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = `${window.location.href}?t=${new Date().getTime()}`;
document.body.appendChild(iframe);
console.log("Page has loaded.");
})
function generateLottoNumbers(maxNumbers, numberRange) {
let numbers = [];
while (numbers.length < maxNumbers) {
let number = Math.floor(Math.random() * numberRange) + 1;
if (!numbers.includes(number)) {
numbers.push(number);
}
}
numbers.sort((a, b) => a - b);
return numbers;
}
function displayNextNumber() {
let displayElement = document.getElementById('results');
let numbersHtml = '本輪已抽取號碼:';
for (let i = 0; i <= currentCount; i++) {
numbersHtml += `<span class="lotto-number">${currentLottoNumbers[i]}</span> `;
}
displayElement.innerHTML = numbersHtml;
}
function updateHistory() {
let historyElement = document.getElementById('history');
let maxMysteryNumbers = parseInt(document.getElementById('maxMysteryNumbers').value);
let tableHtml = '<table><thead><tr><th>輪次</th><th>開獎號碼</th><th>特別號</th></tr></thead><tbody>';
lottoHistory.forEach(function(numbers, index) {
let round = index + 1;
let numbersHtml = numbers.map(number => `<span class="lotto-number">${number}</span>`).join(' ');
let mysteryNumbersHtml = '';
for (let i = 0; i < maxMysteryNumbers; i++) {
let specialNumber = generateSpecialNumber(numbers);
mysteryNumbersHtml += `<span class="mystery-number" onclick="revealSpecialNumber(this, ${specialNumber})">?</span><span class="special-number">${specialNumber}</span>`;
}
tableHtml += `<tr><td>第${round}輪</td><td>${numbersHtml}</td><td>${mysteryNumbersHtml}</td></tr>`;
});
tableHtml += '</tbody></table>';
historyElement.innerHTML = tableHtml;
}
function generateSpecialNumber(existingNumbers) {
let specialNumber;
do {
specialNumber = Math.floor(Math.random() * numberRange) + 1;
} while (existingNumbers.includes(specialNumber));
return specialNumber;
}
function revealSpecialNumber(element, number) {
element.style.display = 'none'; // 隱藏問號
// 創建新的span元素來顯示特別號碼
let specialNumberSpan = document.createElement('span');
specialNumberSpan.className = 'special-lotto-number'; // 使用新的樣式類別
specialNumberSpan.textContent = number;
element.parentNode.insertBefore(specialNumberSpan, element.nextSibling);
}