Добавление запятой к анимированным числам jQuery

Отсюда я использую скрипт jQuery. Пока что это отлично работает, но единственное, что меня интересует, - это то, как поставить запятую в одно из значений.

Поскольку число увеличивается при прокрутке, сложно заставить браузер проверить, что это за целое число, постфактум. Я прочитал кучу сообщений, в которых будет добавлена ​​запятая (в данном случае я пытаюсь получить 100,000), но это не сработает, поскольку браузер изначально не видит это целое число (начинается с 0).

Вот сценарий, который я использую для вызова анимации при прокрутке страницы:

$(function () {
    var fx = function fx() {
      $(".stat-number").each(function (i, el) {
        var data = parseInt(this.dataset.n, 10);
        var props = {
          "from": {
            "count": 0
          },
          "to": {
            "count": data
          }
        };
        $(props.from).animate(props.to, {
          duration: 500 * 1,
          step: function (now, fx) {
            $(el).text(Math.ceil(now));
          },
          complete:function() {
            if (el.dataset.sym !== undefined) {
              el.textContent = el.textContent.concat(el.dataset.sym)
            }
          }
        });
      });
    };

    var reset = function reset() {
      console.info($(this).scrollTop())
      if ($(this).scrollTop() > 950) {
        $(this).off("scroll");
        fx()
      }
    };

    $(window).on("scroll", reset);
  });

Он берет значение из атрибута данных data-n в HTML и затем волшебно работает оттуда. Если у меня есть 100,000 в атрибуте data-n, он прерывает его на 100, когда числа оживляются.

Так что да, я не уверен, нужно ли мне изменить этот скрипт, чтобы он мог учесть запятую в атрибуте данных, или есть что-то еще, что мне может понадобиться сделать постфактум?

Конечно, он обрежет все десятичные дроби, вы используете parseInt

Luca Kiebel 07.09.2018 22:55

@LucaKiebel - есть ли лучший способ вместо использования parseInit?

ultraloveninja 07.09.2018 22:59

есть parseFloat, но 100.000 является 100, так что это не имеет особого значения

Luca Kiebel 07.09.2018 23:10

@LucaKiebel - Хорошо. Я использую не столько десятичную дробь. Это запятая. Данные, которые я получаю, - это 100,000. Я могу удалить запятую с помощью PHP, но затем, когда запускается анимация, число увеличивается до 100000 без запятой. Я не уверен, могу ли я использовать что-то другое, кроме parseInt, чтобы заставить его снова добавить эту запятую, или есть другой способ, которым мне нужно это сделать. Спасибо!

ultraloveninja 07.09.2018 23:19
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
186
1

Ответы 1

Хорошо, поэтому, покопавшись еще немного, я смог найти решение.

Я нашел это:

  $.fn.digits = function(){
    return this.each(function(){
      $(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") );
    })
  }

а затем добавил дополнительный класс в свой HTML.

Затем я подключился к complete:function и добавил:

$(".class-i-added").digits();

до конца анимации.

В целом, это появляется, чтобы обеспечить результат, который я ищу. Поскольку мне нужно только приписать это к одному номеру (пока), он работает так, как должен.

Другие вопросы по теме