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