Javascript 当循环调用setTimeout时不工作
我有一组带有编号Id的Javascript 当循环调用setTimeout时不工作,javascript,jquery,Javascript,Jquery,我有一组带有编号Id的,我想将类添加到,Id=1等待3秒删除类,然后将类添加到等等 如何让这段代码工作虽然循环无法调用设置超时有人能帮忙吗 var spanSet = 4; var spanId = 1; while (spanSet != 0) { changeClass(); spanSet--; } function changeClass() { $('#' + spanId).addClass("hilite"); setTimeout(remove,
,我想将类添加到
,Id=1等待3秒删除类,然后将类添加到
等等
如何让这段代码工作虽然
循环无法调用设置超时
有人能帮忙吗
var spanSet = 4;
var spanId = 1;
while (spanSet != 0) {
changeClass();
spanSet--;
}
function changeClass() {
$('#' + spanId).addClass("hilite");
setTimeout(remove, 1000);
spanId++;
}
function remove() {
alert('remove');
$('#' + spanId).removeClass("hilite");
return true;
}
检查代码中实际发生了什么
移除while
循环,并按如下方式进行设置(请参阅):
var spanId=1;
changeClass();
函数changeClass(){
$('#'+spanId).addClass(“hilite”);
spanId+=1;
设置超时(删除,500);
}
函数删除(){
$('#'+(spanId-1)).removeClass(“hilite”);
如果(spanId,使用jQuery动画函数,这将是最简单的
这就是所需要的:
var spanId = 1;
(function hilite() {
$('#' + spanId).addClass('hilite').delay(3000).queue(function() {
$(this).removeClass('hilite').dequeue();
if (++spanId < 5) {
hilite();
}
});
})();
注意:数字ID是HTML5的东西。CSS也不支持它们。为什么不在while标题中使用spanId
(而不是spanSet
)?这就是为什么问题应该描述你正在尝试做什么,而不是你认为什么是错误的。TJC有一个正确的想法…循环中的超时。逻辑上有些错误。spanId没有保留。这似乎与你的有关。请记住,这不是拥挤调试/开发代码的地方。用更多细节更新问题 var spanId=1;changeClass();function changeClass(){$('#'+spanId).addClass(“hilite”);setTimeout(remove,3000);//我想你是说3000?}function remove(){spanId++$('#'+spanId).removeClass(“hilite”);if(spanId)这比我的要好。更像jQuery。
var spanId = 1;
(function hilite() {
$('#' + spanId).addClass('hilite').delay(3000).queue(function() {
$(this).removeClass('hilite').dequeue();
if (++spanId < 5) {
hilite();
}
});
})();
(function hilite(a) {
$(a.shift()).addClass('hilite').delay(3000).queue(function() {
$(this).removeClass('hilite');
if (a.length) {
hilite(a);
}
});
})(['#1', '#2', '#3', '#4']);