-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
72 lines (61 loc) · 1.8 KB
/
script.js
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
const divGrid = document.querySelector(".grid");
const btnClear = document.querySelector("#btn_clear");
const btnRainbow = document.querySelector("#btn_rainbow");
const colorPicker = document.querySelector("#inp_color");
const sizeSlider = document.querySelector("#inp_size");
const currSize = document.querySelector("#curr_size");
let currColor = colorPicker.value;
let intervalID;
function updateColor() {
const items = document.querySelectorAll(".grid-line > .grid-item");
items.forEach((item) => {
item.addEventListener("mouseenter", () => {
item.style.backgroundColor = currColor;
});
});
}
function getRandomColor() {
const letters = "0123456789ABCDEF";
let color = "#";
for (let i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
function resetRainbow() {
clearInterval(intervalID);
currColor = colorPicker.value;
}
colorPicker.addEventListener("change", resetRainbow);
sizeSlider.addEventListener("change", () => {
resetRainbow();
drawGrid(sizeSlider.value);
});
btnRainbow.addEventListener("click", () => {
clearInterval(intervalID);
intervalID = setInterval(() => {
currColor = getRandomColor();
updateColor();
}, 500);
});
btnClear.addEventListener("click", () => {
resetRainbow();
drawGrid(sizeSlider.value);
});
function drawGrid(dimension) {
divGrid.replaceChildren();
currSize.textContent = `Size: ${dimension}x${dimension}`;
let line, item;
for (let i = 0; i < dimension; i++) {
line = document.createElement("div");
line.setAttribute("class", "grid-line");
for (let j = 0; j < dimension; j++) {
item = document.createElement("div");
item.setAttribute("class", "grid-item");
line.append(item);
}
divGrid.append(line);
}
updateColor();
}
drawGrid(sizeSlider.value);