recherche

Maison  >  Questions et réponses  >  le corps du texte

Placement des virgules dans le compteur de nombres animé

J'ai essayé différentes combinaisons de HTML, CSS et JavaScript qui me donneraient un compteur de nombres animé et défilant avec un symbole (+, %, etc.) à côté de chaque nombre. J'ai finalement trouvé la bonne combinaison, mais elle n'est pas encore parfaite. Je souhaite ajouter des virgules aux nombres 1 000 et supérieurs, mais lorsque j'ajoute des virgules en HTML, cela génère une sortie NaN. Je suis très nouveau sur JavaScript et je ne sais pas quoi ajouter ou corriger dans mon code actuel pour afficher les virgules.

Quelqu'un peut-il réécrire mon code actuel pour afficher des virgules ou me guider sur la façon de procéder ? Je serais très reconnaissant pour toute aide!

<script>
function inVisible(element) {
  //Checking if the element is
  //visible in the viewport
  var WindowTop = $(window).scrollTop();
  var WindowBottom = WindowTop + $(window).height();
  var ElementTop = element.offset().top;
  var ElementBottom = ElementTop + element.height();
  //animating the element if it is
  //visible in the viewport
  if ((ElementBottom <= WindowBottom) && ElementTop >= WindowTop)
    animate(element);
}

function animate(element) {
  //Animating the element if not animated before
  if (!element.hasClass('ms-animated')) {
    var maxval = element.data('max');
    var html = element.html();
    element.addClass("ms-animated");
    $({
      countNum: element.html()
    }).animate({
      countNum: maxval
    }, {
      //duration 2 seconds
      duration: 2000,
      easing: 'linear',
      step: function() {
        element.html(Math.floor(this.countNum) + html);
      },
      complete: function() {
        element.html(this.countNum + html);
      }
    });
  }
}
//When the document is ready
$(function() {
  //This is triggered when the
  //user scrolls the page
  $(window).scroll(function() {
    //Checking if each items to animate are
    //visible in the viewport
    $("h2[data-max]").each(function() {
      inVisible($(this));
    });
  })
});
</script>

P粉277824378P粉277824378309 Il y a quelques jours545

répondre à tous(1)je répondrai

  • P粉211273535

    P粉2112735352024-01-17 00:50:16

    Supprimez les virgules lors de la lecture du HTML et ajoutez-les à nouveau lors de l'affichage.

    function animate(element) {
      //Animating the element if not animated before
      if (!element.hasClass('ms-animated')) {
        var maxval = element.data('max');
        var html = element.html();
        element.addClass("ms-animated");
        $({
          countNum: parseInt(element.html().replace(/,/g, '')) // remove commas
        }).animate({
          countNum: maxval
        }, {
          //duration 2 seconds
          duration: 2000,
          easing: 'linear',
          step: function() {
            element.html((Math.floor(this.countNum) + html).toLocaleString());
          },
          complete: function() {
            element.html((Math.floor(this.countNum) + html).toLocaleString());
          }
        });
      }
    }

    répondre
    0
  • Annulerrépondre