'How to generate red colour automatically in each div tag of 3*3 block using setInterval Using JavaScript? how colour is counting?
This is my output and I want this red color is generated automatically by setInterval:

Solution 1:[1]
I didn't really understand your question, but I have done something anyways.
const gridItem1 = document.querySelector('.grid-item-1');
setInterval(() => {
gridItem1.style.backgroundColor = 'red';
}, 2000)
body {
display: flex;
justify-content: center;
align-items: center;
}
.grid-container {
display: grid;
grid-template-columns: repeat(3, 80px);
grid-template-rows: repeat(3, 80px);
}
.grid-item {
width: 80px;
height: 80px;
border: 1px solid red;
}
<div class="grid-container">
<div class="grid-item grid-item-1"></div>
<div class="grid-item grid-item-2"></div>
<div class="grid-item grid-item-3"></div>
<div class="grid-item grid-item-4"></div>
<div class="grid-item grid-item-5"></div>
<div class="grid-item grid-item-6"></div>
<div class="grid-item grid-item-7"></div>
<div class="grid-item grid-item-8"></div>
<div class="grid-item grid-item-9"></div>
</div>
JavaScript simply takes the first grid item (grid-item-1) and changes its background-color to red.
One thing that needs to be noticed is here the JavaScript is adding inline style, which is not always a good idea.
Other thing you can do is to have a class and then add the class after a set amount of time.
Here's an example:
const gridItem1 = document.querySelector('.grid-item-1');
setInterval(() => {
gridItem1.classList.add('red-div')
}, 2000)
body {
display: flex;
justify-content: center;
align-items: center;
}
.grid-container {
display: grid;
grid-template-columns: repeat(3, 100px);
grid-template-rows: repeat(3, 100px);
}
.grid-item {
width: 100px;
height: 100px;
border: 1px solid red;
}
.red-div {
background: red
}
<div class="grid-container">
<div class="grid-item grid-item-1"></div>
<div class="grid-item grid-item-2"></div>
<div class="grid-item grid-item-3"></div>
<div class="grid-item grid-item-4"></div>
<div class="grid-item grid-item-5"></div>
<div class="grid-item grid-item-6"></div>
<div class="grid-item grid-item-7"></div>
<div class="grid-item grid-item-8"></div>
<div class="grid-item grid-item-9"></div>
</div>
Thank You!
Solution 2:[2]
i think you need to use timeout before the start of the function in am not sure but i have this
let gridItem = document.querySelectorAll('.grid-item');
const btn = document.querySelector('#start');
btn.addEventListener('click',()=>{
setTimeout(()=>{
let rand = getRandomInt(0,gridItem.length);
gridItem[rand].classList.add('red')
gridItem = document.querySelectorAll('.grid-item:not(.red)');
},1000)
})
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min) + min);
}
body {
display: flex;
justify-content: center;
align-items: center;
}
.red{
background-color: red;
}
.grid-container {
display: grid;
grid-template-columns: repeat(3, 80px);
grid-template-rows: repeat(3, 80px);
}
.grid-item {
width: 80px;
height: 80px;
border: 1px solid red;
}
<div class="grid-container">
<div class="grid-item grid-item-1"></div>
<div class="grid-item grid-item-2"></div>
<div class="grid-item grid-item-3"></div>
<div class="grid-item grid-item-4"></div>
<div class="grid-item grid-item-5"></div>
<div class="grid-item grid-item-6"></div>
<div class="grid-item grid-item-7"></div>
<div class="grid-item grid-item-8"></div>
<div class="grid-item grid-item-9"></div>
</div>
<button id="start">start</button>
interval use
let gridItem = document.querySelectorAll('.grid-item');
const btn = document.querySelector('#start');
btn.addEventListener('click',()=>{
let interval = setInterval(()=>{
let rand = getRandomInt(0,gridItem.length);
gridItem[rand].classList.add('red')
gridItem = document.querySelectorAll('.grid-item:not(.red)');
if(!gridItem.length){
clearInterval(interval)
}
},1000)
})
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min) + min);
}
body {
display: flex;
justify-content: center;
align-items: center;
}
.red{
background-color: red;
}
.grid-container {
display: grid;
grid-template-columns: repeat(3, 80px);
grid-template-rows: repeat(3, 80px);
}
.grid-item {
width: 80px;
height: 80px;
border: 1px solid red;
}
<div class="grid-container">
<div class="grid-item grid-item-1"></div>
<div class="grid-item grid-item-2"></div>
<div class="grid-item grid-item-3"></div>
<div class="grid-item grid-item-4"></div>
<div class="grid-item grid-item-5"></div>
<div class="grid-item grid-item-6"></div>
<div class="grid-item grid-item-7"></div>
<div class="grid-item grid-item-8"></div>
<div class="grid-item grid-item-9"></div>
</div>
<button id="start">start</button>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Adarsh Dubey |
| Solution 2 |
