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