var table1 = document.getElementById("records");
console.log("reading?");
for ( i = 0; length = table1.rows.length; i++)
{
console.log('Hi');
console.log(length);
console.log('bye');
/*for (var j = 0; cell = table1.cells[j]; j++)
{
if(cell.toUpperCase().trim()=="INCOMPLETE")
{
console.log(length+cell);
}
}*/
Здесь я пытаюсь узнать длину строки, где я хочу назначить ее и сохранить ее внутри переменной. Также я хочу зайти внутрь, проверить столбцы, которые имеют слово "INCOMPLETE", и взять число этой строки. Наконец, я должен иметь общее количество строк и количество строк, имеющих слово "INCOMPLETE".
То, что я получаю, находится на table1.rows.length - это бесконечный цикл, поскольку в нем нет никаких условий. Если я поставлю table1.rows [i], я бы получил число показанных, чем показано, сколько существует.
Вы можете попробовать:
<script type="text/javascript">
var table1 = document.getElementById("records");
var total_arr = new Array();
for ( i = 0; i< table1.rows.length; i++)
{
console.log('Hi');
console.log(length);
console.log('bye');
for(j=0;j<table1.rows[i].cells.length;j++){
if(table1.rows[i].cells[j].innerHTML.trim()=='INCOMPLETE'){
console.log(i+' '+j);
console.log(total_arr);
if(total_arr.indexOf(i)==-1) total_arr.push(i);
}
}
}
console.log("Total rows: "+table1.rows.length);
console.log('Total rows with incomplete: '+total_arr.length);
</script>
поскольку @tun jurny kyaw упомянул, что вы назначали значения ячейке и строке во время каждого цикла, чтобы получить бесконечный цикл.
for ( i = 0; length = table1.rows.length; i++)
^
here
У вас это бесконечный цикл, потому что вы используете вторую часть цикла for с оператором присваивания.
Это должно быть похоже на
for( i=0, length=table1.rows.length; i<length; i++)
Итак, это может быть то, что вы хотите
var table1 = document.getElementById("records");
var length = table1.rows.length;
var r = [];
var count = 0;
for ( i = 0; i<length; i++)
{
for (var j = 0; j < table1.rows[i].cells.length; j++)
{
cell = table1.rows[i].cells[j].innerHTML;
if(cell.toUpperCase().trim()=="INCOMPLETE")
{
r[count] = i;
count++;
break;
}
}
}
console.log("The rows which have INCOMPLETE are - ");
console.log(r);
console.log("Total number of rows is - ");
console.log(count);
Счетчик массивов содержит количество ячеек ячеек со строкой INCOMPLETE в каждой строке.
Образец разметки:
<table id='records'>
<tbody>
<tr><td></td><td>INCOMPLETE</td><td></td></tr>
<tr><td>INCOMPLETE</td><td>INCOMPLETE</td><td>INCOMPLETE</td></tr>
<tr><td>INCOMPLETE</td><td>INCOMPLETE</td><td></td></tr>
</tbody>
</table>
Чистый JavaScript:
var table1 = document.getElementById("records");
var rows = table1.rows, rowElements, count = [];
for ( i = 0; i < rows.length; i++)
{
count[i] = 0;
rowElements = rows[i].getElementsByTagName('td');
for(j = 0; j < rowElements.length; j++) {
if(rowElements[j].innerHTML == "INCOMPLETE") {
count[i]++;
}
}
}
console.log(count);
for
цикла глючит и , следовательно, бесконечный цикл. Измените его на что-то вроде:for ( i = 0; i < table1.rows.length; i++)