javascript:遍历表中的所有单元格
我试图循环表中的所有单元格,并对值进行比较javascript:遍历表中的所有单元格,javascript,jquery,html,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++) {
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,这也是正确的。
但循环中的警报语句永远不会发生。
你能告诉我环路控制哪里出了问题吗?
谢谢
表格
包含行[]
,行本身包含单元格[]
。无法直接从表中获取单元格[]
您可以使用table.getElementsByTagName('td')
作为快捷方式,前提是没有嵌套的表
否则,您应该循环遍历每个行[]
,在该循环中,您可以循环遍历单元格[]
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.
}
}
var table=document.getElementById('AssignedVLAN'),
行=表。行,行数=行。长度,r,
细胞,细胞计数,c,细胞;
对于(r=0;r表
包含行[]
,这些行本身包含单元格[]
。无法直接从表
获取单元格[]
您可以使用table.getElementsByTagName('td')
作为快捷方式,前提是没有嵌套的表
否则,您应该循环遍历每个行[]
,在该循环中,您可以循环遍历单元格[]
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.
}
}
var table=document.getElementById('AssignedVLAN'),
行=表。行,行数=行。长度,r,
细胞,细胞计数,c,细胞;
for(r=0;r循环内没有收到任何警报的原因是您的for
循环结构不正确。它会立即退出,因为分配cell=table.cells[i]
返回false。循环中没有收到任何警报的原因是您的for
循环的结构不正确。它会立即退出,因为分配单元格=表格。单元格[i]
返回false。请尝试以下操作:
var $table = $('#assignedvlans tbody td');
$.map($table,function(){
if ($(this).text() == IdforVlanToAdd)
{
alert('This vlan is already associated with the port.');
return;
}
});
试着这样做:
var $table = $('#assignedvlans tbody td');
$.map($table,function(){
if ($(this).text() == IdforVlanToAdd)
{
alert('This vlan is already associated with the port.');
return;
}
});
控制台中是否出现任何错误?table.cells无法工作,因为.cells是.rows的一部分,而不是表的直接部分。而且cell
不是jQuery对象,因此它没有val()
方法(它也不是任何类型的输入
,因此在将其设置为jQuery对象后,您可能需要text()
),我假设cell.val
是一个输入错误..?为什么要混合使用jQuery和普通JavaScript方法?(它可以工作,但会使事情变得更复杂。)控制台中是否出现任何错误?table.cells无法工作,因为.cells是.rows的一部分,而不是表的直接部分。而且cell
不是jQuery对象,因此它没有val()
方法(它也不是任何类型的输入
,因此在将其设置为jQuery对象后,您可能需要text()
),我假设cell.val
是一个输入错误….?为什么要混合使用jQuery和普通JavaScript方法?(它可以工作,但会使事情变得更复杂。)不,它会立即退出,因为table.cells[I]
返回未定义的(这是错误的)。如果它是真的,那将是一个无限循环。对于那些人来说(通过谷歌来到这里)需要为表.cells
(修补旧的/IE导向的代码)添加一个简单而小的垫片,请注意“否”,它会立即退出,因为表.cells[i]
返回未定义的(这是错误的)。如果是真的,那将是一个无限循环。对于那些(通过谷歌来到这里)需要为表格.单元格
(修补旧的/面向IE的代码)添加一个简单而小的垫片,看看,如果表格中有一个表格该怎么办?这个问题不是这样。因为这是问题的一个重要部分,提问者没有提到。顺便说一句,你的答案很好。我收到了错误消息语法错误:未标记的中断必须在循环或开关内"。我假设我保留for循环,并在循环中添加您的代码。?是的,没错。我复制/粘贴您的条件代码,但没有看到它包含中断指令。我已更新了答案,如果表中有一个表,该怎么办?在这个问题中不是这样的。因为这将是问题的一个重要部分,并且提问者没有提到这一点。你的回答很好。顺便说一句,我得到了错误“语法错误:未标记的中断必须在循环或开关内”。我假设我保留for循环并将您的代码添加到循环中..?是的,没错。我复制/粘贴了您的条件代码,但没有看到它包含中断指令。我已更新了我的回答我尝试了您的代码,但当我发出警报时(cell.text);所有内容都返回为未定义。这是因为cell.text
未定义。如果您想要文本内容,请尝试cell.firstChild.nodeValue
(如果文本是其中唯一的内容)或text=(cell.textContent | cell.innerText)
,如果那里可能也有HTML。我已经尝试了您的代码,但当我发出警报时(cell.text);所有内容都返回为未定义。这是因为cell.text
未定义。如果需要文本内容,请尝试cell.firstChild.nodeValue
(如果文本是其中唯一的内容)或text=(cell.textContent | cell.innerText)
(如果可能还有HTML)。