Maison > Questions et réponses > le corps du texte
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粉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()); } }); } }