#javascript #jquery #countdown
#javascript #jquery #обратный отсчет
Вопрос:
Я хочу показать обратный отсчет на своем веб-сайте. для всех пользователей, но я не хочу использовать какой-либо внутренний язык. Обратный отсчет начинается с 20
и после каждого 1min
, на которое я уменьшаю число 1
. Означает, что после 2mins
того, как значение будет 18
и когда оно достигнет 3
значения, число должно быть сброшено 20
. Я использую разницу во времени, чтобы сделать это правильно, но сброс не работает. У меня есть две функции
function change_html() {
var start_number = 20;
var start = new Date("November 11, 2020 00:00:00"); // This will get the all milisec
var end = new Date(); // This will get the all milisec of current
var final = (get_difference(start,end)); // This will return all the mins passed
var new_start = (final/20); // This will get how many 20 are passed
var new_final = new_start.toString();
new_final = new_final.split(".");
var final_to_show = new_start-parseInt(new_final[0]);
final_to_show = final_to_show*20; // This will get how many numbers are remain to complete 20
final_to_show = Math.round(((20)-final_to_show));
document.getElementById('html_element').innerHTML = final_to_show;
}
И второй для преобразования миллисекунд в минуты
function get_difference(start,end) {
var difference =((end.getTime() - start.getTime()) / 1000)/60;
return Math.abs(Math.round(difference));
}
Я не хотел сбрасывать обратный отсчет при перезагрузке, и цикл бесконечен.
Я не понимаю, что делать с сбросом, потому что он не основан на каком-либо статическом значении, это будет сделано в jQuery и Javascript. Пожалуйста, помогите мне с этим или предложите мне сделать это другим способом.
Комментарии:
1. Дайте мне знать, если есть другие предложения.
2. Спасибо за ответ.
3. Я хочу сделать это только в jQuery или чистом javascript
4. вы написали:
when it reachs at 3 the number should reset to 20
—> значит, это всего лишь цикл обратного отсчета 17 миллионов с числами от 20 до 3?5. Я вас не понял
Ответ №1:
Вам просто нужно использовать метод setInterval
самым сложным было установить обратный отсчет на 17 минут со смещением в 3 пункта, с первым запуском в 20.
… и вы должны посмотреть, как работает модуль в математике
const showElement = document.getElementById('html_element')
, one_Sec = 1000
, one_Min = one_Sec * 60
, countMax = 20
, countMin = 3
, countRange = countMax - countMin 1
, startDateT = (new Date("November 11, 2020 00:00:00")).getTime()
, timeNowDiff = () => Math.floor(Math.abs(((new Date()).getTime() -startDateT) / one_Min ))
;
showElement.textContent = countMax -(timeNowDiff() % countRange)
setInterval(()=>
{
showElement.textContent = countMax -(timeNowDiff() % countRange)
}
, one_Sec *10); // check display change every 10 seconds....
changing every minutes : <span id="html_element" style="color:red"></span> until 3
Комментарии:
1. Он сбрасывает его самостоятельно при перезагрузке, я не хотел этого, потому что эта страница открывается на вкладке max user, и таймер будет одинаковым для всех
2. нет, проблема не в том же, значение меняется каждую МИНУТУ , как и ваш вопрос.
3. Я забыл упомянуть, что цикл бесконечен и не сбрасывается при перезагрузке