繁体   English   中英

一次调用JS函数进行窗口滚动

[英]Call JS function only once for window scroll

当用户滚动到特定部分时,我有一个写文本的功能(打字机效果)。 但是我只想做一次。 因此,如果用户第一次滚动,则文本将被写入,仅此而已。 但是,如果用户再次滚动(与哪个方向无关),将再次调用该函数,以便一次又一次地键入文本……这是JS代码:

var counter = 0;
$(window).on('scroll', (function () {
    counter ++;
    if(counter < 80){
        if ($(window).scrollTop() >= $('#anchor-form').offset().top - 200) {
            $(window).scrollTop();
            $('.form__icon').addClass('form--animate');
            showText("Some Text to be written", 0);
        }
    }
}));

function showText(msg, x) {
    if (x < msg.length) {
        $txt_form.html(msg.substring(0, x+1));
        x++;
        setTimeout(function() {
            showText(msg,x)
        }, 50)
    }
};

如您所见,我通过设置计数器来阻止它。 我已经检查了将窗口滚动到此部分并仅在IF语句内设置值时将有多少个“计数”。 但是我觉得这还不够,并且是“良好实践”的方法。 除了这种预防方法外,有时文本还会出现故障。 我也尝试过使用jQuery .one()方法,但是它不起作用。

我将不胜感激任何建议。

在if语句中获取第二个计数器,并将其设置为counter2 ++,然后在if语句中检查count2 === 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM