Hallo,
ich habe einen Counter auf meiner Webseite integriert. Jetzt wäre es super, wenn dieser einmalig aktiviert wird und zwar erst dann, wenn die jeweilige Position erreicht ist.
Folgenden Code habe ich dafür verwendet (Quelle stackoverflow)
Das scheint beinahe zu funktionieren. Leider wird das Script immer aktiviert, sobald gescrollt wird.
Danke schon einmal!
Gruß
ich habe einen Counter auf meiner Webseite integriert. Jetzt wäre es super, wenn dieser einmalig aktiviert wird und zwar erst dann, wenn die jeweilige Position erreicht ist.
Folgenden Code habe ich dafür verwendet (Quelle stackoverflow)
Das scheint beinahe zu funktionieren. Leider wird das Script immer aktiviert, sobald gescrollt wird.
Danke schon einmal!
Gruß
Code:
$(window).scroll(function() { var hT = $('.counter').offset().top, hH = $('.counter').outerHeight(), wH = $(window).height(), wS = $(this).scrollTop(); console.log((hT-wH) , wS); if (wS > (hT+hH-wH) && (hT > wS) && (wS+wH > hT+hH)){ ==> ab hier beginnt der Counter $('.counter').each(function() { var $this = $(this), countTo = $this.attr('data-count'); $({ countNum: $this.text() }).animate({ countNum: countTo }, { duration: 5000, easing: 'linear', step: function() { $this.text(commaSeparateNumber(Math.floor(this.countNum))); }, complete: function() { $this.text(commaSeparateNumber(this.countNum)); //alert('finished'); } } ); }); function commaSeparateNumber(val) { while (/(\d+)(\d{3})/.test(val.toString())) { val = val.toString().replace(/(\d+)(\d{3})/, '$1' + ',' + '$2'); } return val; } } });
Kommentar