我有一个按钮,可在div滚动时更改div的背景。背景需要在计时器上进行更改,因此我使用setTimout来执行更改背景的方法。我认为clearTimeout将取消并且设置了超时,因此我将其放在mouseleave事件上。但是,它似乎并没有停止超时。我的逻辑在这里吗?

$("#h2Buzz").mouseenter(function () {
   setTimeout(playV(), 2700);
   setTimeout(playP(), 5400);
});
$("#h2Buzz").mouseleave(function () {
   clearTimeout(playV());
   clearTimeout(playP());
});


function playV() {
    $("#ServicesBackgroundImage2").css("background-image", "url(/images/v.jpg)");
}
function playPn() {

    $("#ServicesBackgroundImage2").css("background-image", "url(/images/p.jpg)");
}

最佳答案

为您的setTimeout分配一个变量,然后将其传递给clearTimeout以清除它,即

var play_timeout = setTimeout("playV()", 2700);
clearTimeout(play_timeout);


(请注意,我在第一个setTimeout参数周围添加了引号)

关于javascript - 对setTimeout和clearTimeout的困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3823172/

10-11 12:01