Why can't I change every class with a certain name at once with my function? I want to have a day or night mode as a button that can change all "dark" class elements to "light" and so forth. It only works if I press the button multiple times as if my for loop is timing up short cuz I'm using the length of the elements to stop and maybe that length is decreasing during the for loop thus shortening it out? If that's true, how do I solve this problem?
I made the website live so you can see the problem and inspect my code. https://angry-euclid-939cdc.netlify.com/templates/page2.html
Here is the code:
function AllDay(){
var night = document.getElementById("night");
if(night){
night.innerHTML = "Day";
console.log(night);
night.id= "day";
console.log("changing night to day")
}
var stuff = document.getElementsByClassName("dark");
if(stuff){
for(var i= 0; i < 10; i++){
if(stuff[i]){
stuff[i].className = "light";
}
}
}
}
function AllNight(){
var day = document.getElementById("day");
if(day){
day.innerHTML = "Night";
day.id = "night";
console.log("changing day to night");
}
var stuff = document.getElementsByClassName("light");
if(stuff){
for(var i= 0; i < 10; i++){
if(stuff[i]){
stuff[i].className = "dark";
}
}
}
}
.dark{
background-color: darkgray;
}
.light{
background-color: lightblue;
font-size: 3ch;
}
#higher{
height:400px;
border: 1ch solid rosybrown;
}
#middle{
padding:5rem;
}
#upper{
text-align: right;
}
.inline{
display: inline-block;
}
<div id="rapper">
<div id="night">Night</div>
<div id="upper">
<div class="inline">In-line</div>
<div class="inline">In-line</div>
<div class="inline"><button onclick="AllDay()">All Day</button></div>
<div class="inline"><button onclick="AllNight()">All Night</button></div>
</div>
<div id="higher" class="dark">
<p>Higher?</p>
</div>
<div id="middle1" class="dark">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae nemo, sed eum ad, sequi eveniet ratione quibusdam atque omnis magni accusantium numquam iste illo, in soluta deserunt placeat deleniti. Inventore.</p>
</div>
<div id="lower1" class="dark">
<p>Lorem ipsum aslkdf;</p>
</div>
<div id="lower2" class="dark">
<p>Lorem ipsum aslkdf;</p>
</div>
<div id="lower3" class="dark">
<p>Lorem ipsum aslkdf;</p>
</div>
<div id="middle2" class="dark">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae nemo, sed eum ad, sequi eveniet ratione quibusdam atque omnis magni accusantium numquam iste illo, in soluta deserunt placeat deleniti. Inventore.</p>
</div>
<div id="lower4" class="dark">
<p>Lorem ipsum aslkdf;</p>
</div>
<div id="lower5" class="dark">
<p>Lorem ipsum aslkdf;</p>
</div>
<div id="lower6" class="dark">
<p>Lorem ipsum aslkdf;</p>
</div>
</div>
Thanks peeps.