看起来时间不清楚。
谢谢!
var tempo = 5000;
var elemento;
var quantos;
var atual;
// Inicia
$(document).ready(function() {
bannerRotator("#destaques");
});
// Funções do Banner
function bannerRotator(element) {
// Conta quantos banners existem:
$('<ul class="buttons"></ul>').appendTo(element);
i = 0;
$(element).find(".banner").each(function() {
$(element).find(".banner").eq(i).addClass("id"+i);
buttons = element+" ul.buttons";
acId = i+1;
$('<li><a href="javascript:getBanner('+i+');">'+acId+'</a></li>').appendTo(buttons);
i++;
});
// Inicia a rotacao
elemento = element;
quantos = i;
rotate(i,-1);
}
function getBanner(r) {
r = r-1;
rotate(quantos, r);
}
function rotate(i, base) {
clearTimeout(tempo);
if (base<i-1) {
base++;
atual = base;
setTimeout('rotate('+i+', '+base+');', tempo);
}
else {
base = 0;
atual = base;
setTimeout('rotate('+i+', '+base+');', tempo);
}
// Faz os fades
$(elemento).find(".banner").animate({opacity: 0,});
$(elemento).find(".banner").eq(base).animate({opacity: 1,});
// Arruma os botoes
$(elemento).find("ul.buttons li").removeClass("active");
$(elemento).find("ul.buttons li").eq(base).addClass("active");
}
答案 0 :(得分:13)
因为您错误地使用了clearTimeout()
。您的代码需要类似于以下内容:
var x = setTimeout("doStuff();", tempo);
clearTimeout(x);
您当前正在使用tempo
作为超时句柄,这就是它无效的原因。
答案 1 :(得分:2)
使用setTimeout
的回复将其传递给clearTimeout
函数:
var timeoutId = setTimeout(callBack, 1000);
//then, later in the code
clearTimeout(timeoutId);
答案 2 :(得分:1)
要使用clearTimeout
,您需要将调用返回的值传递给setTimeout
。
var timeout;
// ...
timeout = setTimeout('rotate('+i+', '+base+');', tempo);
// ...
clearTimeout(timeout);
答案 3 :(得分:0)
您可以使用setTimeout ...
返回的结果清除超时var x = setTimeout(functionPointer, 500);
clearTimeout(x);
答案 4 :(得分:0)
当你调用setTimeout时,它将返回一个标识符。这就是需要传递给clearTimeout的东西。
答案 5 :(得分:-1)
你永远不会将tempo
设为计时器!做:
tempo = setTimeout('rotate('+i+', '+base+');', timeOutTime);
然后将timeOutTime
设置为您希望计时器转到的数量