Чтобы ответить на ваш вопрос о индикаторе выполнения, вы устанавливаете интервал для запуска changeBar каждые 500 миллисекунд, что приводит к сбросу индикатора выполнения каждые полсекунды.Если вам нужна задержка перед запуском индикатора выполнения, используйте setTimeout.
Кроме того, вы запускаете индикатор выполнения для перемещения на 1% каждые 10 миллисекунд, что приведет к завершению индикатора в течение 1 секунды.Если вы хотите, чтобы панель завершилась за 4 секунды, установите интервал идентификатора для запуска каждые 40 миллисекунд.
Не видя CSS и HTML, я должен предположить, что вы используете правильные имена идентификаторов в своем коде, ноесли ничего не происходит, это также может быть причиной.
Я просмотрел код W3Shools, на который вы ссылаетесь, и попытался повторить то, что вы пытались сделать, и заставил это работать:
<html>
<head>
<style>
#myProgress {
width: 100%;
background-color: #ddd;
}
#myBar {
width: 1%;
height: 30px;
background-color: #4CAF50;
}
</style>
</head>
<body>
<div id="myProgress">
<div id="myBar"></div>
</div>
</body>
<script>
function changeBar() {
let proBar = document.querySelector('#myBar');
var width = 1;
var id = setInterval(frame, 40);
function frame() {
if (width >= 100) {
clearInterval(id);
} else {
width++;
proBar.style.width = width + '%';
}
}
}
setTimeout(changeBar, 100);
</script>
</html>