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



我的功能在用户滚动到特定部分时会写入文本(打字机效果(。但是我只想这样做一次。因此,如果用户第一次滚动文本是编写的,则应该全部滚动。但是,如果用户再次滚动(在哪个方向上无关紧要(再次调用函数,以便一次又一次地键入文本...这是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

最新更新