Почему функция не считает сумму строки таблицы?
Есть страничка на гитхабе. После нажатия на кнопку в последних ячейках строк таблицы должна посчитаться сумма всех ячеек строки, но моя функция выводит `NaN. Почему?
Сам скрипт функции:
function cols (){
var table = document.getElementById("tbl");
var rows = table.getElementsByTagName("tr");
for (var i =0; i < rows.length; i++) {
var columns = rows[i].getElementsByTagName("td");
var sum = 0;
for (var j =0; j<columns.length; j++){
if (!isNaN(columns[j].innerHTML)) sum = columns[j];
columns[columns.length-1].innerHTML= +sum;
}
if (sum %2 == 0) rows[i].style.backgroundColor = "lightgray";
else rows[i].style.backgroundColor = "lightblue";
}
}
html-код:
<table width="200" border="1" id='tbl'>
<tr>
<td>1</td>
<td>4</td>
<td>14</td>
<td>3</td>
<td>14</td>
</tr>
<tr>
<td>2</td>
<td>14</td>
<td>3</td>
<td>1</td>
<td>14</td>
</tr>
<tr>
<td>3</td>
<td>14</td>
<td>4</td>
<td>5</td>
<td>14</td>
</tr>
<tr>
<td>4</td>
<td>1</td>
<td>2</td>
<td>14</td>
<td>14</td>
</tr>
<tr>
<td>5</td>
<td>1</td>
<td>3</td>
<td>14</td>
<td>14</td>
</tr>
</table>
<input type="button" name ="sumInTableButton" onclick ="cols()" value="Посчитать сумму в строке">
Ответы (2 шт):
Автор решения: Ilshat Nasyrov
→ Ссылка
Попробуйте изменить код следующим образом
function cols (){
var table = document.getElementById("tbl");
var rows = table.getElementsByTagName("tr");
for (var i =0; i < rows.length; i++) {
var columns = rows[i].getElementsByTagName("td");
var sum = 0;
for (var j =0; j<columns.length; j++){
if (!isNaN(columns[j].innerHTML)) {
sum += columns[j].innerHTML * 1;
}
}
columns[columns.length-1].innerHTML = sum;
if (sum %2 == 0) rows[i].style.backgroundColor = "lightgray";
else rows[i].style.backgroundColor = "lightblue";
}
}
Автор решения: Konstantin_SH
→ Ссылка
Изменил функцию таким образом:
function cols (){
var table = document.getElementById("tbl");
var rows = table.getElementsByTagName("tr");
for (var i =0; i < rows.length; i++) {
var columns = rows[i].getElementsByTagName("td");
var sum = 0;
for (var j =0; j<columns.length-1; j++){
if (!isNaN(parseInt(columns[j].innerHTML))) sum+= parseInt( columns[j].innerHTML);
columns[columns.length-1].innerHTML = sum;
}
if (sum %2 == 0) rows[i].style.backgroundColor = "lightgray";
else rows[i].style.backgroundColor = "lightblue";
}
}