我正在尝试遍历表中的所有单元格并对值进行比较。
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,这也是正确的。 但循环内的警报语句永远不会发生。 你能告诉我循环控制在哪里出错吗? 谢谢。
答案 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);