как получить только длину таблицы? А также проверьте, состоит ли каждая ячейка строки или столбца из НЕПРАВИЛЬНОГО слова? с номером НЕПОЛНОГО слова?

0
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], я бы получил число показанных, чем показано, сколько существует.

  • 0
    Вы петлевой условие в вашем for цикла глючит и , следовательно, бесконечный цикл. Измените его на что-то вроде: for ( i = 0; i < table1.rows.length; i++)
Теги:

3 ответа

0

Вы можете попробовать:

<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 упомянул, что вы назначали значения ячейке и строке во время каждого цикла, чтобы получить бесконечный цикл.

0
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);
  • 0
    Нет, это не показывает никакой информации относительно этого. Работает ли это или нет. В консоли отображается только одна строка. Предупреждение: включение панели «Сценарий» приводит к замедлению Firefox из-за ошибки платформы. Это будет исправлено в следующих основных версиях Firefox и Firebug. чтение?
  • 0
    хорошо, каков ваш ожидаемый результат? Вы просто хотите показать, где существуют слова "НЕПРАВИЛЬНО"?
0

Здесь рабочая демонстрация

Счетчик массивов содержит количество ячеек ячеек со строкой 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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню