Я пытаюсь перебрать все ячейки в таблице и сделать сравнение по значению.

            var table = document.getElementById("assignedvlans");
            alert(table);
            alert($('#assignedvlans tbody tr').length);
            for (var i = 0, cell; cell = table.cells[i]; i++) {
                 //iterate through all cells in table.
                 alert('in the loop');
                 alert(cell.val());
                 if (cell.val == IdforVlanToAdd)
                 {
                    alert('This vlan is already associated with the port.');
                    $bexit = true;
                    break;
                 }                  
            }

Когда я проверяю этот код, код оповещения (таблицы) работает - он возвращает «объект HTMLTableElement», а оповещение о длине таблицы возвращает 4, что также правильно. Но оповещения внутри цикла никогда не бывают. Можете ли вы сказать мне, где я ошибаюсь с контролем цикла? Спасибо.

1
dot 30 Янв 2013 в 00:22

4 ответа

Лучший ответ

table содержит rows[], которые сами содержат cells[]. Вы не можете получить cells[] напрямую из table.

Вы можете использовать table.getElementsByTagName('td') в качестве ярлыка, если нет вложенных таблиц.

В противном случае вы должны пройти через каждый из rows[], и в этом цикле вы можете пройти через cells[].

var table = document.getElementById('assignedvlans'),
    rows = table.rows, rowcount = rows.length, r,
    cells, cellcount, c, cell;
for( r=0; r<rowcount; r++) {
    cells = rows[r].cells;
    cellcount = cells.length;
    for( c=0; c<cellcount; c++) {
        cell = cells[c];
        // now do something.
    }
}
6
Niet the Dark Absol 29 Янв 2013 в 20:26

Причина, по которой вы не получаете никаких предупреждений внутри цикла, заключается в том, что ваш цикл for не структурирован правильно. Он выходит немедленно, потому что присваивание cell = table.cells[i] возвращает false.

0
Jonathan M 29 Янв 2013 в 20:27

Попробуйте вот так:

        var $table = $('#assignedvlans tbody td');
        $.map($table,function(){
             if ($(this).text() == IdforVlanToAdd)
             {
                alert('This vlan is already associated with the port.');
                return;
             }   
        });
1
sdespont 29 Янв 2013 в 20:43
var myDataArr = [];
$('#dynamic_cards tr').each(function(){
    $(this).find('td').each(function(){
        myDataArr.push($(this).text());
    });
});
console.log(myDataArr);
0
Shubham Bhardwaj 29 Июн 2017 в 07:15