而循环调用setTimeout不起作用
while loop calling setTimeout not working
我有一组编号为Id的<span>
,我想用Id=1
将类添加到<span>
,等待3秒删除类,然后将类添加至<span id=2>
,以此类推。。。
如何使此代码工作。while
循环无法调用setTimeout
,有人能帮忙吗?
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;
}
检查这个jsfiddle,看看代码中实际发生了什么。
删除while
循环并将其设置为如下(请参阅jsfiddle):
var spanId = 1;
changeClass();
function changeClass(){
$('#'+spanId).addClass("hilite");
spanId+=1;
setTimeout(remove, 500);
}
function remove(){
$('#'+(spanId-1)).removeClass("hilite");
if (spanId<6){
changeClass();
}
}
这对于jQuery动画函数来说是最简单的。
这是所需的全部:
var spanId = 1;
(function hilite() {
$('#' + spanId).addClass('hilite').delay(3000).queue(function() {
$(this).removeClass('hilite').dequeue();
if (++spanId < 5) {
hilite();
}
});
})();
工作演示http://jsfiddle.net/alnitak/Bs8kj/
对于一个更通用的方法,它不假设ID,也不需要外部变量,请尝试以下操作:
(function hilite(a) {
$(a.shift()).addClass('hilite').delay(3000).queue(function() {
$(this).removeClass('hilite');
if (a.length) {
hilite(a);
}
});
})(['#1', '#2', '#3', '#4']);
注意:数字ID是HTML5的东西。CSS也不支持它们。
相关文章:
- setTimeout刷新,毫秒参数不起作用
- JavaFX+WebView/Javascript:setTimeOut不起作用调用堆栈来自Java
- 如何让Webworker真正响应,以及为什么setTimeout()不起作用
- Angularjs 更新 setTimeout 中的范围变量不起作用
- JavaScript setTimeout在IE上不起作用
- 而循环调用setTimeout不起作用
- 为什么javascript setTimeout不起作用,而setInterval对下面的程序起作用
- 为什么这个 setTimeout() 方法在这个函数中不起作用
- Javascript SetTimeOut函数不知怎么不起作用
- SetTimeout()不会'不起作用
- Javascript setTimeout 不起作用
- setTimeout 在 jQuery 插件中不起作用
- JavaScript setTimeout 不起作用
- 在 Javascript 中使用 setTimeout 移动文本不起作用
- JavaScript代码首先使用setTimeout工作,但随后崩溃或不起作用
- Jquery setTimeout 不起作用(图像幻灯片)
- jQuery setTimeout:行上的第一个操作不起作用
- 如果我导航到另一个页面,setTimeout 不起作用
- Javascript:我的setTimeout函数由于第三方而不起作用
- setTimeout() 在每个循环中不起作用