我将行的背景动态更改为setinterval但不能正常工作。
如果单击该按钮,则将类名更改为表中的行。
我的代码:
HTML代码:
<table id="table">
<tr>
<td>AAA11</td>
<td>BBB11</td>
</tr>
..
..
</table>
<button id="btn">click</button>
CSS代码
.red { background-color: red; }
JS代码
var table = document.getElementById("table");
var rows = table.getElementsByTagName("tr");
// My func
function func(){
for (var i = 0; i < rows.length; i++) {
var index=0;
var c = rows[i].className;
if(c!="red") {
index=i;
} else {
index = i+1;
}
sec(index);
}
setInterval(func(), 2000);
}
// Change class name the rows
function sec(index){
for (var i = 0; i < rows.length; i++) {
if(index==i) {
rows[index].className="red";
}
if(index!=i ){
rows[index].className="null";
}
}
}
$('#btn').click(function(){
setInterval(func(), 2000);
});
答案 0 :(得分:1)
重置所有其他行,但“sec”函数中的最后一行除外。
if(index!=i ){
rows[index].className="null";
}
删除该部分,它应该像你想要的那样工作
...很难我没有得到你想做的事,因为你所做的只是设置所有行背景......如果你想重置红色的那些,不要使用你的sec()函数...试试这个:
function func(){
for (var i = 0; i < rows.length; i++) {
var index=0;
var c = rows[i].className;
if(c=="red") {
rows[i].className="";
} else {
rows[i].className="red";
}
}
}
[编辑] ......清除了OP想要做的事情之后: http://jsfiddle.net/bzWV2/1/
[EDIT2] ......更简单的方法: http://jsfiddle.net/bzWV2/2/
答案 1 :(得分:0)
function highlight(element)
{
$('tr').removeClass('red');
el = (!element)? $('tr:first') : element;
el.addClass('red');
next_el = el.next('tr');
var el = (next_el.length == 0)? $('tr:first'): next_el;
setTimeout(function(){ highlight(el) }, 1000);
}
setTimeout(function(){ highlight() }, 1000);
答案 2 :(得分:0)
你可以这样做:
var $table = $("#table");
var $rows = $table.find("tr");
var func = function(){
var curIndex = $rows.filter('.red').index(),
nextIndex = curIndex === $rows.length - 1?0:++curIndex;
$rows.eq(nextIndex).addClass('red').siblings().removeClass('red');
}
$('#btn').click(function(){
$rows.eq(0).addClass('red');
setInterval(func, 2000);
});