如何重新运行setTimeOut()?

时间:2011-11-17 02:48:11

标签: javascript

如何重新运行(从0开始)setTimeOut()?

这是我基于其他问题尝试的:(它不起作用)

var timer;
function talk() { 
    clearTimeout(timer);
    $('#dialog').show();
    timer = setTimeout(function(){
        $('#dialog').hide();
        }, 2000);
}

$("#dialog").hover(function () {
    talk();
    });

talk();

如何在settimeout上正确取消任何内容并再次运行?

你可以在这里看到它不起作用:jsfiddle.net/yrBGm

2 个答案:

答案 0 :(得分:0)

你要问的是什么并不完全清楚,但这一行会停止你的待定时间:

clearTimeout(timer);

然后,如果你想再次启动它,你会这样做:

timer = setTimeout(function(){
    $('#dialog').hide();
}, 2000);

答案 1 :(得分:0)

检查悬停是否发生。如果是这样,它会取消超时并在以后重新运行。如果没有,则超时继续:

var timer;
function talk() { 
    if ($('#dialog2').hasClass('talking')) {
        clearTimeout(timer);
        $('#dialog2').removeClass('talking');
    } else  {
        $('#dialog').show();
        timer = setTimeout(function(){
            $('#dialog').hide();
        }, 2000);
    }
}

$("#dialog2").hover(function () {
    talk();
    $('#dialog2').addClass('talking');
});

编辑:

另外,当你在“var timer;”中定义了timer时,timer是未定义的,所以你可以测试它是否是未定义的,然后再在“timer = setTimeout(funcion(){...像这样:< / p>

if (timer == undefined) time = setTimeout( funciton () {
    ....
},time);