javascript:循环遍历表中的所有单元格

时间:2013-01-29 20:22:32

标签: javascript jquery html

我正在尝试遍历表中的所有单元格并对值进行比较。

            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,这也是正确的。 但循环内的警报语句永远不会发生。 你能告诉我循环控制在哪里出错吗? 谢谢。

4 个答案:

答案 0 :(得分:5)

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.
    }
}

答案 1 :(得分:1)

试试这样:

        var $table = $('#assignedvlans tbody td');
        $.map($table,function(){
             if ($(this).text() == IdforVlanToAdd)
             {
                alert('This vlan is already associated with the port.');
                return;
             }   
        });

答案 2 :(得分:0)

您在循环中未获得任何警报的原因是您的for循环结构不正确。它立即退出,因为赋值cell = table.cells[i]返回false。

答案 3 :(得分:0)

var myDataArr = [];
$('#dynamic_cards tr').each(function(){
    $(this).find('td').each(function(){
        myDataArr.push($(this).text());
    });
});
console.log(myDataArr);