Parse Int не выполнен. Не могу понять, почему возникает эта проблема.
function compute(){
var totalDis = document.getElementById("totaldisplay");
var htmlDis = "";
htmlDis+ = "<table><tr><th>Student Name</th><th>Total Mark</th>";
for(var row=0;row<names.length;row++)
{
var valMrk = document.querySelectorAll("#row" + row + ".stdMrk");
var totalval = 0;
for(var i=0;i<=5;i++)
{
totalval += parseInt(valMrk[i].Value);
//alert("testing compute function");
}
htmlDis += "<tr id='row" + i +"'><td style='border:1px solid black;'>"+names[row]+"</td><td style='border:1px solid black;'>"+totalval+"</td>";
}
htmlDis+ = "</table>";
totalDis.innerHTML=htmlDis;
}
Согласно приведенному выше коду, функция перестает выполняться, когда функция входит в цикл, и останавливается на шаге parse int, что раздражает, потому что в другой форме она отлично работает с тем же кодом, всего с несколькими модификациями переменных.
Почему возникает эта проблема?
(Отредактировано в соответствии с ответом) это цикл, который генерирует поле ввода, и приведенные выше коды должны вычислять каждую строку, но после внесения изменений строка отображается, но не вычисляется, а отображается только 0 для каждой строки.
Вот коды для цикла, генерирующего текстовые поля.
for(j=0;j<names.length;j++)
{
html+ = "<tr><td style='border:1px solid grey;'>"+names[j]+"</td>";
for(i = 0; i<num_of_ica; i++)
{
html+ = "<td><input type='text' class='stdMrk' placeholder='0' value='0' /></td>";
}
for(var k=1;k<=1;k++)//display project or final exams txt box
{
html+= "<td><input type='text' class='stdMrk' placeholder='0' value='0' /></td>";
}
html+ = "</tr>";
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Очевидно, что valMrk.length меньше 5, поэтому в цикле он достигает несуществующего индекса и генерирует ошибку. измените его следующим образом (также убедитесь, что все значения могут быть проанализированы как int):
var valMrk = document.querySelectorAll("#row" + row + ".stdMrk");
var totalval = 0;
for(var i=0;i<valMrk.length;i++)
{
if (!isNaN(valMrk[i].Value)
totalval += parseInt(valMrk[i].Value);
//alert("testing compute function");
}
когда я добавляю условие if в цикл, сама функция не выполняется.
@KrishnaRamdin У меня была опечатка, которую я исправил, она должна быть sNaN не isNan
он по-прежнему не добавляет числа и отображает 0 для каждой строки имен.. help... В основном у меня есть набор входных тегов, которые генерируются с помощью цикла for, тогда эта функция должна добавлять эти числа в соответствии с их именами и отображать добавлены цифры рядом с именами.
@KrishnaRamdin Я отредактировал свой ответ, пожалуйста, посмотрите