忽略隐藏的行

时间:2011-03-01 11:07:04

标签: javascript jquery

如何重写此函数以便完全忽略任何隐藏的行?

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

2 个答案:

答案 0 :(得分:2)

编辑:结果我的建议使用CSS无效 - 去图...无论如何你可以使用jQuery

$('tr:visible:odd').addClass('even');
$('tr:visible:even').addClass('odd');

(注意反转,因为jQuery从0开始计算)。根本不需要循环! : - )

See it working

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