Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2018, 08:06
Аспирант
Отправить личное сообщение для kuchuluk Посмотреть профиль Найти все сообщения от kuchuluk
 
Регистрация: 04.04.2014
Сообщений: 30

Непонятно откуда появляется значение NaN при подсчете суммы
Здравствуйте. Есть таблица, пытаюсь подсчитывать в каждой строке сумму разниц всех чисел в каждой ячейке. То есть в каждой ячейке есть значение 9/18 или "В", то есть выходной. Соответственно если значение 9/18, то высчитываю разницу и складываю все разницы в каждой строке, если "В", то ничего с этой ячейкой не делаю.
<td class="width20px aligner" id="1-8-2018">9/18</td><td class="width20px aligner" id="2-8-2018">9/18</td><td class="width20px aligner" id="3-8-2018">9/18</td><td class="graph-table-holiday width20px aligner" id="4-8-2018">В</td><td class="graph-table-holiday width20px aligner" id="5-8-2018">В</td><td class="width20px aligner" id="6-8-2018">9/18</td><td class="width20px aligner" id="7-8-2018">9/18</td><td class="width20px aligner" id="8-8-2018">9/18</td><td class="width20px aligner" id="9-8-2018">9/18</td><td class="width20px aligner" id="10-8-2018">9/18</td><td class="graph-table-holiday width20px aligner" id="11-8-2018">В</td><td class="graph-table-holiday width20px aligner" id="12-8-2018">В</td><td class="width20px aligner" id="13-8-2018">9/18</td><td class="width20px aligner" id="14-8-2018">9/18</td><td class="width20px aligner" id="15-8-2018">9/18</td><td class="width20px aligner" id="16-8-2018">9/18</td><td class="width20px aligner" id="17-8-2018">9/18</td><td class="graph-table-holiday width20px aligner" id="18-8-2018">В</td><td class="graph-table-holiday width20px aligner" id="19-8-2018">В</td><td class="width20px aligner" id="20-8-2018">9/18</td><td class="graph-table-holiday width20px aligner" id="21-8-2018">В</td><td class="width20px aligner" id="22-8-2018">9/18</td><td class="width20px aligner" id="23-8-2018">9/18</td><td class="width20px aligner" id="24-8-2018">9/18</td><td class="graph-table-weekday width20px aligner" id="25-8-2018">12/21</td><td class="graph-table-holiday width20px aligner" id="26-8-2018">В</td><td class="width20px aligner" id="27-8-2018">9/18</td><td class="width20px aligner" id="28-8-2018">9/18</td><td class="width20px aligner" id="29-8-2018">9/18</td><td class="graph-table-holiday width20px aligner" id="30-8-2018">В</td><td class="graph-table-holiday width20px aligner" id="31-8-2018">В</td><td class="aligner">168</td><td>168</td></tr>

// получаю строку если у нее есть ID
if (TRId != null) {
  // объявляю переменную в которой будет
  // сумма всех разниц ячеек данной строки
  difference2 = 0;
  
  // для каждой ячейки в цикле произвожу действия
  elem.querySelectorAll('td').forEach(function(elem) {
    var TDId = elem.getAttribute('id');
    if (TDId != null) {
      var currentTDVal = elem.innerHTML;
      currentTDVal = currentTDVal.substring(0,5);
      if (currentTDVal.indexOf('/') > 0) {
        var hours = currentTDVal.split('/');
	var difference = hours[1] - hours[0] - 1;
      }
      difference2 = difference2 + difference;
    }
  }
}


Так вот в difference2 всегда значение NaN. Проверил каждую ячейку строки alert-ом, и действительно в конце каждой строки откуда-то появляется значение NaN. Хотя по логике вещей уже после проверки if (currentTDVal.indexOf('/') > 0) не должно ничего попадать, кроме значений 9/18. Не могу понять, откуда берется этот NaN?
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2018, 08:25
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 422

Сообщение от kuchuluk
Хотя по логике вещей уже после проверки if
Строка difference2 = difference2 + difference; находится снаружи этого if, т.е. выпоняется всегда. А вот difference присваивается только внутри этого if.

Получается, что вы складываете число и undefined ( = NaN ).
И в последующем - NaN + число = NaN

Последний раз редактировалось Белый шум, 05.09.2018 в 08:27.
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2018, 09:14
Аспирант
Отправить личное сообщение для kuchuluk Посмотреть профиль Найти все сообщения от kuchuluk
 
Регистрация: 04.04.2014
Сообщений: 30

Сообщение от Белый шум
И в последующем - NaN + число = NaN
Спасибо вам огромное! Очень помогли
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При нажатии на кнопку появляется другой текст ami_moor Общие вопросы Javascript 3 12.06.2015 16:56
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 07:42
Как при щелчке прибавить значение cookies на единицу. Peter23 Общие вопросы Javascript 6 23.02.2013 11:14
не сохраняется значение переменной при событии cyberpunk Events/DOM/Window 2 21.09.2012 08:59
При клике менять значение в ячейке таблицы edmundantes Events/DOM/Window 8 27.04.2012 16:26