我有一份学生名单 - 每名学生都是具有特定班级和身份证的DIV。
我还有一系列学生证,我随机分配。
我想做的是以下内容:
pulse
类)selected
类)以下代码正常运作......
setTimeout(function() {
$("#" + arr[1]).addClass('pulse');
setTimeout(function() {
$("#" + arr[1]).removeClass('pulse');
setTimeout(function() {
$("#" + arr[2]).addClass('pulse');
setTimeout(function() {
$("#" + arr[2]).removeClass('pulse');
setTimeout(function() {
$("#" + arr[3]).addClass('pulse');
setTimeout(function() {
$("#" + arr[3]).removeClass('pulse');
setTimeout(function() {
$("#" + arr[4]).addClass('pulse');
setTimeout(function() {
$("#" + arr[4]).removeClass('pulse');
setTimeout(function() {
$("#" + arr[5]).addClass('pulse');
setTimeout(function() {
$("#" + arr[5]).removeClass('pulse');
setTimeout(function() {
$("#" + arr[6]).addClass('pulse');
setTimeout(function() {
$("#" + arr[6]).removeClass('pulse');
setTimeout(function() {
$("#" + arr[7]).addClass('pulse');
setTimeout(function() {
$("#" + arr[7]).removeClass('pulse');
setTimeout(function() {
$("#" + arr[8]).addClass('pulse');
setTimeout(function() {
$("#" + arr[8]).removeClass('pulse');
setTimeout(function() {
$("#" + arr[9]).addClass('pulse');
setTimeout(function() {
$("#" + arr[9]).removeClass('pulse');
setTimeout(function() {
$("#" + arr[10]).addClass('pulse');
setTimeout(function() {
$("#" + arr[10]).removeClass('pulse');
$("#" + arr[0]).addClass('activeClass');
Dojo.disableButtons(false);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
}, 250);
但是非常难看。
使用for循环是否有更有效的方法?
提前致谢,
答案 0 :(得分:5)
你可以使用一个函数(显然重命名它更有意义):
function lessMessy(index) {
$("#" + arr[index]).addClass('pulse');
if (index === 10) {
$("#" + arr[0]).addClass('activeClass');
Dojo.disableButtons(false);
} else {
setTimeout(function() {
$("#" + arr[index]).removeClass('pulse');
lessMessy(index + 1)
}, 250)
}
}
lessMessy(1)
编辑:请注意,这比setInterval
好,因为总是等待四分之一秒。如果内部代码花费的时间超过1/4秒,则setInterval
将跳过该迭代。这将导致页面损坏,因为pulse
类不会从前一个元素中删除。
答案 1 :(得分:1)
我认为setInterval功能是您所需要的
这会执行其他功能,直到您拨打clearInterval
[编辑]
这是一个想法:
var arr = YOUR ARRAY HERE;
var index = 0;
var t = setInterval(function(){
if (index > 0){
$('#' + arr[index - 1]).removeClass('pulse'); //remove class from previous
}
if (index < 10){
$('#' + arr[index]).addClass('pulse'); //add class to current element
}
else {
clearInterval(t);//stop everything
}
index ++;
}, 250)
这可能不起作用。这是我的头脑,但它应该给你和想法。
答案 2 :(得分:0)
使用回调的稍微冗长/一般的方法:
var pulseStudent = function( student, callback ){
student = $('#' + student);
student.addClass('pulse');
setTimeout(function(){student.removeClass('pulse');}, 250);
setTimeout(callback, 500);
};
var pulseStudents = function( students, callback ){
var student = students.pop();
if ( student ) {
pulseStudent( student, function(){
pulseStudents( students, callback );
});
}
else {
callback();
}
};
pulseStudents( arr.slice(0), function(){
$("#" + arr[0]).addClass('activeClass');
Dojo.disableButtons(false);
});