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

Непонятно откуда появляется значение 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?
Ответить с цитированием