【问题标题】:jQuery setInterval on mouseover鼠标悬停时的jQuery setInterval
【发布时间】:2018-08-05 12:59:04
【问题描述】:

我有一个我自己无法解决的问题。一旦他们将鼠标悬停在照片上,我想显示一个倒数计时器。它在您第一次悬停时起作用。如果您移动鼠标并再次悬停,那只会是奇怪的数字跳跃。 我希望有人可以帮助我!

最好的问候,

塔西洛

 <script>

$('.Photo').on({

    'mouseover': function () {

var timer = 5;  

var interval = setInterval(function() {
    timer--;
    $('.timer').text(timer);
    if (timer === 0) clearInterval(interval);
}, 1000);  

    },      
'mouseout' : function () {
        clearTimeout(timer);   
    }       
});
</script>

【问题讨论】:

    标签: function hover setinterval mouseover mouseout


    【解决方案1】:

    我认为这是因为timer 变量是在mouseover() 中本地声明的,而您正试图在mouseout() 中清除它。试着把它放在$('.Photo').on({ });之外

    此外,将您的 interval 变量放在外面,以便您可以在 mouseout() 函数中清除它。

    <script>
    
        var interval;
        var timer = 5;
    
        $('.photo').on({
    
            'mouseover': function () {
    
                interval = setInterval(function() {
                    timer--;
                    $('.timer').text(timer);
                    if (timer === 0) clearInterval(interval);
    
                }, 1000);  
    
            },
    
           'mouseout' : function () {
               clearInterval(interval);
               timer = 5;
            }       
        });
    </script>
    

    【讨论】:

    • 非常感谢您的回复。不幸的是,虽然它没有解决问题。在 $('.Photo').on({ }); 之外使用 var 计时器计时器变得非常疯狂。
    • 尝试重置mouseout() 中的计时器。 timer = 5; 不要在鼠标悬停内移动计时器。先试试这个
    • 我将如何编写重置?我对 javascript 真的很陌生...:/
    • 网站还没完,直接给你看:njoki.de/indexPort9.html
    • 成功了!!!!!!非常感谢!只有一件事,直到它应该是这样:第一秒显示的数字是之前显示的最后一个数字哈哈哈。令人困惑。但是它不再从 5 开始,而是从 2 开始,然后是 4。你知道答案吗??
    猜你喜欢
    • 2011-08-04
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多