phi*_*owe 0 javascript jquery settimeout
我有一个按钮,当它翻转时会改变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)");
}
Run Code Online (Sandbox Code Playgroud)
你正在使用setTimeout和clearTimeout错误地使用.该setTimeout函数返回超时的句柄,该句柄将被传递clearTimeout以停止它.
var playVTimeout;
...
playVTimeout = setTimeout(playV, 2700);
....
clearTImeout(playVTimeout);
Run Code Online (Sandbox Code Playgroud)
另外请注意,setTimeout(playV(), 2700);将调用playV() 现在和2.7秒后执行它的返回值.你应该传递一个函数对象playV.
为您分配一个变量setTimeout,然后传递给clearTimeout它以清除它,即
var play_timeout = setTimeout("playV()", 2700);
clearTimeout(play_timeout);
Run Code Online (Sandbox Code Playgroud)
(注意我在你的第一个setTimeout参数附近添加了引号)
| 归档时间: |
|
| 查看次数: |
2856 次 |
| 最近记录: |