Создание обратного отсчета в HTML/JS

Я создал простую тестовую страницу для таймера, который отсчитывает от 10 до 0. Должна быть полоса и текст, показывающий прогресс. Поэтому я создал эту страницу:

<html>
<head>
      
</head>

<body>

<script>

function ProgressCountdown(timeleft, bar, text) {
  return new Promise((resolve, reject) => {
    var countdownTimer = setInterval(() => {
      timeleft--;

      document.getElementById(bar).value = timeleft;
      document.getElementById(text).textContent = timeleft;

      if (timeleft <= 0) {
        clearInterval(countdownTimer);
        resolve(true);
      }
    }, 1000);
  });
}

</script>

<div>
 <div>
  <progress value = "10" max = "10" id=pageBeginCountdown"></progress>
  <p> Beginning in <span id=pageBeginCountdownText">10 </span> seconds</p>
 </div>
</div>

</body>
</html>

Он не работает, ни полоса, ни текст не сдвигаются с места. Где я неправ? Страница находится по адресу https://geheimbund.ddnss.de/test.html — я отлаживаю это часами, но никак не могу заставить его работать. Был бы супер-благодарен за любую помощь.

Я пробовал все, что мог придумать. Я ожидаю, что это сработает, т.е. полоса и текст должны отсчитываться до 0.

Глядя на ваш код и веб-сайт, я не вижу, что запускает функцию ProgressCountdown для запуска

Carsten Løvbo Andersen 16.01.2023 13:48

в вашем коде нет элементов с идентификатором bar или text

Chris G 16.01.2023 13:51

Отвечает ли это на ваш вопрос? Как написать таймер обратного отсчета на JavaScript?

kemicofa ghost 16.01.2023 13:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Основываясь только на опубликованном коде, вам понадобится событие, которое запускает вашу функцию. Кроме того, как уже отмечалось, переменные функций не определены.

window.addEventListener('load', () => {
            ProgressCountdown();
            });

Спасибо - я думал, что событие будет автоматически запускаться при загрузке. Виноват. Я добавил ваш четный обработчик. Спасибо

Jay Konrad 17.01.2023 09:18

Как теперь лучше всего определить переменные? Внутри функции или вне функции?

Jay Konrad 17.01.2023 09:25

Примите мой ответ (нажав «галочку»), если он решил проблему, которую вы опубликовали, чтобы другие могли извлечь из этого пользу. Что касается переменных «bar» и «text», они тоже где-то в вашем коде? Если да, то не могли бы вы добавить его в пост?

enricw 17.01.2023 14:13

Нет, я использую их только здесь. Я поставил галочку :-)

Jay Konrad 17.01.2023 15:51

но что делает document.getElementById(bar).value = timeleft; вызов? Поле ввода в вашем html файле? Я бы предложил опубликовать еще один вопрос с вашим конкретным сомнением, но вы можете сначала объявить их (var bar; var text;), а затем присвоить им определенное значение через вашу функцию.

enricw 18.01.2023 14:13

Другие вопросы по теме