NikMaster777
@NikMaster777

Как сделать счетчик чисел с точкой?

Есть счетчик который листает только целые числа. Подскажите пожалуйста как в нем перелистывать числа с точкой. Например 89,9.

<h1><span class="count number" data-max="99.9">0</span>%</h1>


var number = document.querySelector('.number'),
		numberTop = number.getBoundingClientRect().top,
		start = +number.innerHTML, end = +number.dataset.max;

		window.addEventListener('scroll', function onScroll() {
			if(window.pageYOffset > numberTop - window.innerHeight / 2) {
				this.removeEventListener('scroll', onScroll);
				var interval = setInterval(function() {
					number.innerHTML = ++start;
					if(start == end) {
						clearInterval(interval);
					}
				}, 5);
			}
		});
  • Вопрос задан
  • 407 просмотров
Решения вопроса 1
dyuriev
@dyuriev
A posteriori
  1. берите текущее значение, умножайте на 10
  2. инкрементируйте/декрементируйте (прибавляйте/удаляйте единцу)
  3. делите на 10
  4. округляйте до 1 знака после точки, а то js знаменит своей погрешностью при операциях с float =)


upd: вот примерно так подправить ваш скрипт, но с округлениями не заморачивался, если где-то увидите цифры в форме 86.500000003213..., то вам домашние задание для самообразования - сделать округление перед выводом =)
<script type="text/javascript">
    var number = document.querySelector('.number'),
    numberTop = number.getBoundingClientRect().top,
    start = +number.innerHTML*10, end = +number.dataset.max*10; //правка раз

    window.addEventListener('scroll', function onScroll() {
      if(window.pageYOffset > numberTop - window.innerHeight / 2) {
        this.removeEventListener('scroll', onScroll);
        var interval = setInterval(function() {
          number.innerHTML = ++start/10; //правка два
          if(start == end) {
            clearInterval(interval);
          }
        }, 5);
      }
    });
  </script>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы