如何使用JavaScript以增量方式设置样式?

如何使用JavaScript以增量方式设置样式?,javascript,jquery,Javascript,Jquery,因此,我使用jQuery,我有一个相当大的表来完成我想做的事情(>100行)。对于每一行,我都想做很多的工作,我的问题是我是否有 $('#tableid>tr').each(function(i){some code here}); 当我点击5的倍数时,我如何停止处理,只是先将效果放在浏览器上,这样用户就可以与之交互,而不是冻结 非常感谢 杰森嗯,真奇怪。使用setTimeout递归调用函数怎么样?它不是5的倍数,但您可以使用setTimeout对事件进行排队,并让用户在事件触发时与页面

因此,我使用jQuery,我有一个相当大的表来完成我想做的事情(>100行)。对于每一行,我都想做很多的工作,我的问题是我是否有

$('#tableid>tr').each(function(i){some code here});
当我点击5的倍数时,我如何停止处理,只是先将效果放在浏览器上,这样用户就可以与之交互,而不是冻结

非常感谢


杰森

嗯,真奇怪。使用setTimeout递归调用函数怎么样?

它不是5的倍数,但您可以使用setTimeout对事件进行排队,并让用户在事件触发时与页面交互

比如:

$('#tableid>tr').each( function(i, e){ setTimeout( function(){ OtherFunc(e); }, (100 * i) ) } );

function OtherFunc(e) {
    /* processing code */
}
根据需要调整参数(特别是100ms的增量),但你会明白的。

for(var i=0;i$('tableid>tr')。length-1?$('tableid>tr')。length-1:i+4;
for(var i=0 ; i<$('#tableid>tr').length ; i+=5){
   var sliceEnd = i+4 > $('#tableid>tr').length-1 ? $('#tableid>tr').length-1 : i+4;
   $('#tableid>tr').slice(i,sliceEnd).each(function(i){some code here});
}
$('#tableid>tr').slice(i,sliceEnd).each(函数(i){这里的一些代码}); }

你应该做到这一点。

试试看:

var$trs=$('#tableid tr');
对于(变量i=0,len=$trs.length;i
这应该还是相当快的,即使是100多行,里面都有什么
。each()
?FurtiveFelon-这个问题解决了吗?
var $trs = $('#tableid tr');

for(var i = 0, len = $trs.length; i < len; i = i + 5) {
    (function(i) {
        setTimeout(function() {
           $trs.slice(i,i + 5).addClass('yellow');
        }, (500 * (i / 5)));
    })(i);
};