I have a HTML code with 3 list items and the ids for my ul is ‘exercise6-list’
<ul id="exercise6-list"> <li>List 1</li> <li>List 2</li> <li>List 3</li> </ul>
I need to make each li glow for three seconds and repeat itself
So far I have written:
var moveGlow = function() {
var element = document.querySelector("#exercise6-list");
// ... to make it glow i've so far used .setAttribute("class", "glow")
};
clearInterval(window.interval);
window.interval = setInterval(moveGlow, 3000);
*I’m very new to programming, but thank you for your help
Advertisement
Answer
To make a timed function we use setInterval, and add the class “glow” to the current element, and remove that class from the previous one.
To cycle through the elements, we use an index-variable, which increases per cycle and loops back around when necessary.
let index = 0;
let elements = document.querySelector("#exercise6-list").children;
let glowFunc = () => {
if (elements.length <= 0) { // Actually not needed since we know there are 3 elements
index = 0;
return;
}
index %= elements.length; // Map index to valid values
elements[(elements.length + index - 1) % elements.length].classList.remove("glow"); // Remove "glow" from previous element
elements[index].classList.add("glow"); // Add "glow" to current element
++index; // Increase 'index'
};
glowFunc(); // Initial call to "start" it without initial delay
setInterval(glowFunc, 3000); // Make it a timed functionli {transition: background-color 0.2s}
.glow {background-color: orange}<ul id="exercise6-list"> <li>List 1</li> <li>List 2</li> <li>List 3</li> </ul>