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

このコードをテストすると、アラート (テーブル) コードが機能しています。「オブジェクト HTMLTableElement」が返され、テーブルの長さのアラートが 4 を返します。これも正しいです。しかし、ループ内のアラート ステートメントは決して発生しません。ループ制御のどこが間違っているのか教えてもらえますか? ありがとう。

4

4 に答える 4

6

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.
    }
}
于 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 に答える