I have started to learn JavaScript, and I was trying to make an animation of a loading bar, but I do not know how to make it repeat the function after the bar reaches to the end, I thought maybe with a loop I can get the outcome I wanted, but I am still learning about loops, I have tried different methods, and changing the whole code, and nothing worked.
const progressBar1 = document.getElementsByClassName ('progress-bar1')[0] setInterval(() => { const computedStyle = getComputedStyle(progressBar1) const width = parseFloat(computedStyle.getPropertyValue ('--width')) || 0 progressBar1.style.setProperty('--width', width + .1) },5)
Can anyone help me? Thank you for your time.
Advertisement
Answer
You already have a loop by using setInterval
to call this set of code each 5ms.
One way you could have this continue to loop back the growth progress is by setting a max-width. I’m not sure if there is a parent container you could query for width or if you wanted to set a constant, but just check each time the width is greater than max, reset back to 0 and grow again.
const progressBar1 = document.getElementsByClassName ('progress-bar1')[0]; const widthMax = 300; setInterval(() => { const computedStyle = getComputedStyle(progressBar1); const widthCurrent = parseFloat(computedStyle.getPropertyValue ('--width')) || 0; const width = widthCurrent > widthMax ? 0 : widthCurrent; progressBar1.style.setProperty('--width', width + .1); }, 5);