ответы, которые я вижу здесь работают очень хорошо, но не совсем строгим. Хотя setInterval() кажется правильной функцией для использования, с течением времени он страдает от небольшого «дрейфа». Кроме того, если какая-либо другая функция JavaScript выполняет секунду или более, то ваши обратные часы могут затормозить и показать неправильное время.
Хотя эти события могут быть маловероятными, большая точность на самом деле не сложнее. То, что вы хотите, это таймер, который отталкивает часы от какой-либо неточности. Вам нужно рассчитать время от системных часов, а не от частоты временных интервалов, и для этого вам придется отказаться от setInterval() в пользу серии вызовов setTimeout(). Следующий код показывает, как.
function countdown(elementName, minutes, seconds)
{
var element, endTime, hours, mins, msLeft, time;
function twoDigits(n)
{
return (n <= 9 ? "0" + n : n);
}
function updateTimer()
{
msLeft = endTime - (+new Date);
if (msLeft < 1000) {
element.innerHTML = "countdown's over!";
} else {
time = new Date(msLeft);
hours = time.getUTCHours();
mins = time.getUTCMinutes();
element.innerHTML = (hours ? hours + ':' + twoDigits(mins) : mins) +
':' + twoDigits(time.getUTCSeconds());
setTimeout(updateTimer, time.getUTCMilliseconds() + 500);
}
}
element = document.getElementById(elementName);
endTime = (+new Date) + 1000 * (60*minutes + seconds) + 500;
updateTimer();
}
Попробуйте: http://jsfiddle.net/mrwilk/qVuHW
Если ваши часы должны случайно выровнять очень близко к секундам системных часов, таймер обратного отсчета может появиться в «Мисс биения» из-за получения тайм-аута события просто немного раньше или только немного после односекундного интервала. Решение состоит в том, чтобы выровнять ваши события на полсекунды; то есть на полпути между битами секунд системных часов. Это то, что делают 500 в коде, где 500мс = ½ сек.
Единственное, что стоит отметить, это то, что здесь отображаются часы, а также минуты и секунды; то есть HH: MM: SS. Вычисление часов, минут и секунд с миллисекунд не сложно, но немного неудобно, и проще всего, чтобы объект Date выполнял эту работу для вас.
Определение DataList – Raynos
Вы должны быть намного понятнее о том, что вы пытаетесь достичь, чтобы получить какие-либо полезные ответы на этот вопрос. Что вы хотите в списке данных? Как это относится к обратному отсчету? –
У меня есть datalist и в datalist у меня есть таблица, и в одной из ячеек я хочу поместить div или lable или что-то вроде этого, которое вызывает обратный отсчет функции (код), и я хочу, чтобы функция получила число секунд, используя Eval в соответствии с продуктом – roi