Функция, возвращающая NaN и неправильно считающая

#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() -> недопустимая дата -> NaN

3. Я добавил HTML. Новая скрипка:jsfiddle.net/ALjT9/4

Ответ №1:

Вы JS ищете элемент, которого нет (по крайней мере, в вашей скрипке)

   var StartTime = new Date(InThisDiv.find('.StartTime').val());
  var StopTime = new Date(InThisDiv.find('.StopTime').val());
 

Вам нужно убедиться, что эти элементы находятся в DOM и имеют значение.