Как установить обратный отсчет в реальном времени в HTML/javascript
Здравствуйте, я хочу сделать обратный отсчет и разместить его на своем сайте. Я сделал обратный отсчет, но у меня есть проблема, когда я запускаю его, секунды замерзают, они больше не бегут... Так что обратный отсчет больше не идет в реальном времени...
Вот что я сделал:
<span id="dhour"></span> h <span id="dmin"></span> min <span id="dsec"></span> sec <div id="count2"></div> <div class="numbers" id="dday" hidden="true"></div> <script> var montharray = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); var year; var month; var day; var hour = 19; var minute = 10; var tz = 0; var ladate; var today; function myCallback(json) { ladate = new Date(json.dateString); year = ladate.getFullYear(); month = ladate.getMonth() + 1; day = ladate.getDate(); countdown(year, month, day, hour, minute); } function countdown(yr, m, d, hr, min) { theyear = yr; themonth = m; theday = d; thehour = hr; theminute = min; today = ladate; var todayy = today.getYear(); if (todayy < 1000) { todayy += 1900; } var todaym = today.getMonth(); var todayd = today.getDate(); var todayh = today.getHours(); var todaymin = today.getMinutes(); var todaysec = today.getSeconds(); var todaystring1 = montharray[todaym] + " " + todayd + ", " + todayy + " " + todayh + ":" + todaymin + ":" + todaysec; var todaystring = Date.parse(todaystring1) + (tz * 1000 * 60 * 60); var futurestring1 = (montharray[m - 1] + " " + d + ", " + yr + " " + hr + ":" + min); var futurestring = Date.parse(futurestring1) - (today.getTimezoneOffset() * (1000 * 60)); var dd = futurestring - todaystring; var dday = Math.floor(dd / (60 * 60 * 1000 * 24) * 1); var dhour = Math.floor((dd % (60 * 60 * 1000 * 24)) / (60 * 60 * 1000) * 1); var dmin = Math.floor(((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) / (60 * 1000) * 1); var dsec = Math.floor((((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000)) / 1000 * 1); if (dday <= 0 && dhour <= 0 && dmin <= 0 && dsec <= 0) { document.getElementById('count2').style.display = "inline"; document.getElementById('after').style.display = "none"; document.getElementById('dday').style.display = "none"; document.getElementById('dhour').style.display = "none"; document.getElementById('dmin').style.display = "none"; document.getElementById('dsec').style.display = "none"; document.getElementById('days').style.display = "none"; document.getElementById('hours').style.display = "none"; document.getElementById('minutes').style.display = "none"; document.getElementById('seconds').style.display = "none"; return; } else { document.getElementById('count2').style.display = "none"; document.getElementById('dday').innerHTML = dday; document.getElementById('dhour').innerHTML = dhour; document.getElementById('dmin').innerHTML = dmin; document.getElementById('dsec').innerHTML = dsec; setTimeout("countdown(theyear,themonth,theday,thehour,theminute)", 1000); } } </script> <script type="text/javascript" src="http://www.timeapi.org/utc/now.json?callback=myCallback"></script>
Спасибо.
Что я уже пробовал:
Я пытался, но не нашел решения...
ZurdoDev
Отладьте его. Выясните, что происходит.