#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
Я пытаюсь создать счетчик, который отсчитывает время, но он возвращает NaN и не ведет обратный отсчет.
У меня более одного счетчика. Один, который ведет обратный отсчет, другой, который ведет отсчет до stoptime
и еще один, который считается после stoptime
, то есть Overtime
. Но этот возвращает NaN, а другие не работают или не считаются.
function fixIntegers(integer) {
if (integer < 0) integer = 0;
if (integer < 10) return '0' integer;
return '' integer;
}
function TimeCount(difference) {
var toReturn = {
weeks: 0,
days: 0,
hours: 0,
minutes: 0,
seconds: 0
};
toReturn.seconds = fixIntegers(difference % 60);
difference = Math.floor(difference / 60);
toReturn.minutes = fixIntegers(difference % 60);
difference = Math.floor(difference / 60);
toReturn.hours = fixIntegers(difference % 24);
difference = Math.floor(difference / 24);
toReturn.days = fixIntegers(difference % 7);
difference = Math.floor(difference / 7);
toReturn.weeks = fixIntegers(difference);
return toReturn;
}
var InThisDiv = $(this).parents().eq(0); // Parent
var NowTime = new Date(); //Time Now
var StartTime = new Date(InThisDiv.find('.StartTime').val());
var StopTime = new Date(InThisDiv.find('.StopTime').val());
if (StartTime < NowTime amp;amp; NowTime < StopTime) {
var diff = TimeCount(Math.floor((NowTime - StartTime) / 1000));
output = (parseInt(diff, 10) 2);
console.log(output.weeks);
} else if (StopTime < NowTime) {
var output = TimeCount(Math.floor((StopTime - StartTime) / 1000));
} else if (NowTime > StopTime) {
var output = TimeCount(Math.floor((NowTime - StopTime) / 1000));
} else {
var output = TimeCount(Math.floor((StopTime - NowTime) / 1000));
}
console.log(output.weeks);
Заранее спасибо. Вот моя скрипка: http://jsfiddle.net/ALjT9 /
Редактировать:
Добавлена новая скрипка HTML: http://jsfiddle.net/ALjT9/4 /
Комментарии:
1. Ваша скрипка не содержит html.
2. нет html ->
.val()
не возвращает правильную вещь -> недопустимый аргументnew Date()
-> недопустимая дата -> NaN3. Я добавил HTML. Новая скрипка:jsfiddle.net/ALjT9/4
Ответ №1:
Вы JS ищете элемент, которого нет (по крайней мере, в вашей скрипке)
var StartTime = new Date(InThisDiv.find('.StartTime').val());
var StopTime = new Date(InThisDiv.find('.StopTime').val());
Вам нужно убедиться, что эти элементы находятся в DOM и имеют значение.