ページ内にある複数の要素を、カウントアップして指定の数値に来たらストップさせるものを作ったのですが、
ページスクロールで要素が近くに来たらカウントアップをスタートさせるように書き換えたところ、
カウントアップしている数字の表示がおかしくなり、
一瞬カウントダウンしてまたカウントアップしたりするようになってしまいました。
正常にカウントアップさせるにはどのようにしたらいいのか、ご教授お願いします。
html
1<div class="count count-slow" data-num="80">00</div> 2<div class="count count-fast" data-num="20">00</div> 3<div class="count count-slow" data-num="99">00</div> 4<div class="count count-fast" data-num="8">0</div> 5<div class="count count-slow" data-num="5">0</div> 6<div class="count count-fast" data-num="40">00</div>
jQuery
1$(window).on('load scroll', function(){ 2 $('.count').each(function(){ 3 var self = $(this), 4 thisPosition = self.offset().top, 5 scroll = $(window).scrollTop(), 6 windowHeight = $(window).height(), 7 countMax = self.attr('data-num'), 8 thisCount = self.text(), 9 countTimer; 10 11 12 if (scroll >= thisPosition - windowHeight + windowHeight / 5){ 13 if (self.hasClass('count-slow')) { 14 var countSpeed = 600; 15 } else if (self.hasClass('count-fast')) { 16 var countSpeed = 30; 17 } 18 19 function timer(){ 20 countTimer = setInterval(function(){ 21 var countNext = thisCount++, 22 addZero = ('0' + countNext).slice(-2); 23 24 if (countMax > 10 && countNext < 10) { 25 self.text(addZero); 26 } else { 27 self.text(countNext); 28 } 29 30 if (countNext == countMax){ 31 clearInterval(countTimer); 32 } 33 }, countSpeed); 34 } 35 timer(); 36 } 37 }); 38});
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/09 10:45
退会済みユーザー
2018/11/09 10:57