Javascript 函数被多次调用时的clearTimeout
我有一个警告消息栏,当用户单击特定链接时,它会向下滑动。在指定的时间段后,警告栏将向上滑动。如果用户多次单击此链接,我希望重置计时器,将警报条向上滑动,然后再次向下滑动(重置计时器)Javascript 函数被多次调用时的clearTimeout,javascript,jquery,Javascript,Jquery,我有一个警告消息栏,当用户单击特定链接时,它会向下滑动。在指定的时间段后,警告栏将向上滑动。如果用户多次单击此链接,我希望重置计时器,将警报条向上滑动,然后再次向下滑动(重置计时器) 因此,除了clearTimeout部分之外,一切都正常。如果单击该链接,警报栏将向下滑动,然后在设置超时完成后再向上滑动。但是,如果您多次单击该链接,它不会重置警告栏 您应该在您的函数之外声明slideoptimer。使其全球化。您应该在功能之外声明slideoptimer。使其全局化。您应该在当前范围之外定义va
因此,除了clearTimeout部分之外,一切都正常。如果单击该链接,警报栏将向下滑动,然后在设置超时完成后再向上滑动。但是,如果您多次单击该链接,它不会重置警告栏 您应该在您的函数之外声明
slideoptimer
。使其全球化。您应该在功能之外声明slideoptimer
。使其全局化。您应该在当前范围之外定义var slideoptimer
var slideUpTimer;
$('#main_container').live('click', function(){
$('.answer_yes').click (function(){
if ($('#topbar_alert').is(':visible')){
clearTimeout(slideUpTimer)
}
$('#topbar_alert').slideDown(300);
$('#topbar_alert_container').empty();
$('#topbar_alert_container').append('Alert Created!');
slideUpTimer = setTimeout(function() {
$('#topbar_alert').slideUp(300);
},8000);
});
});
您应该在当前范围之外定义
var slideoptimer
var slideUpTimer;
$('#main_container').live('click', function(){
$('.answer_yes').click (function(){
if ($('#topbar_alert').is(':visible')){
clearTimeout(slideUpTimer)
}
$('#topbar_alert').slideDown(300);
$('#topbar_alert_container').empty();
$('#topbar_alert_container').append('Alert Created!');
slideUpTimer = setTimeout(function() {
$('#topbar_alert').slideUp(300);
},8000);
});
});
当您在函数中使用
var slideoptimer
时,它只存在于该次执行中,不会持久存在
要想使用slideoptimer
,需要将其置于全局范围内
var slideUpTimer;
$(document).ready....
然后将其分配给
slideUpTimer = setTimeout()...
注意赋值时缺少
var
。在函数内部使用var slideoptimer
时,它只存在于该次执行中,不会持久
要想使用slideoptimer
,需要将其置于全局范围内
var slideUpTimer;
$(document).ready....
然后将其分配给
slideUpTimer = setTimeout()...
注意分配时缺少var