如何重写此函数以便完全忽略任何隐藏的行?
function stripeRows(table) {
var numRows = table.rows.length;
for (var i = 1; i < numRows; i++) {
var ID = table.rows[i].id;
if (i % 2 == 0) {
table.rows[i].className = "GridRow";
}
else {
table.rows[i].className = "GridRowAlt";
}
}
}
答案 0 :(得分:2)
编辑:结果我的建议使用CSS无效 - 去图...无论如何你可以使用jQuery
$('tr:visible:odd').addClass('even');
$('tr:visible:even').addClass('odd');
(注意反转,因为jQuery从0开始计算)。根本不需要循环! : - )
答案 1 :(得分:0)
但是,如果检测到隐藏的行,则必须至少将计数器与行索引分离,例如:通过for(... in ...)
。如果您找到隐藏的行,请继续循环:
var i = 0;
for (var row in table.rows) {
if(row.style.visibility == 'hidden')
// or similar (see other answers), e.g.: if($('#element_id:visible').length > 0)
continue;
var ID = row.id;
if (i % 2 == 0) {
row.className = "GridRow";
}
else {
row.className = "GridRowAlt";
}
++i;
}