1

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

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

当我测试此代码时,警报(表格)代码正在工作 - 它返回“object HTMLTableElement”并且表格长度的警报返回4,这也是正确的。但是循环内的警报语句永远不会发生。你能告诉我循环控制哪里出错了吗?谢谢。

4

4 回答 4

6

tablecontains 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.
    }
}
于 2013-01-29T20:26:15.387 回答
1

试试这样:

        var $table = $('#assignedvlans tbody td');
        $.map($table,function(){
             if ($(this).text() == IdforVlanToAdd)
             {
                alert('This vlan is already associated with the port.');
                return;
             }   
        });
于 2013-01-29T20:30:44.673 回答
0

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

于 2013-01-29T20:27:55.953 回答
0
var myDataArr = [];
$('#dynamic_cards tr').each(function(){
    $(this).find('td').each(function(){
        myDataArr.push($(this).text());
    });
});
console.log(myDataArr);
于 2017-06-29T07:15:12.147 回答