2013-04-26 10 views
9

Próbuję zwiększyć liczbę wewnątrz elementu na stronie. Ale potrzebuję tego numeru, aby dodać przecinek na tysięczną wartość miejsca. (Przykład 45,000 nie 45000)Jak zwiększać liczbę za pomocą animacji przy użyciu przecinka za pomocą jQuery?

<script> 
// Animate the element's value from x to y: 
    $({someValue: 40000}).animate({someValue: 45000}, { 
     duration: 3000, 
     easing:'swing', // can be anything 
     step: function() { // called on every step 
      // Update the element's text with rounded-up value: 
      $('#el').text(Math.round(this.someValue)); 
     } 
    }); 
</script> 
<div id="el"></div> 

Jak można zwiększyć liczbę pomocą animacji z przecinkiem?

+0

Zapraszamy do obejrzenia tej http://stackoverflow.com/questions/7327046/jquery-number-formatting –

+0

Zapisałbym numer w atrybucie danych, a następnie pokazuję wersję w tekście w formacie przecinkami. Gdy ją zwiększysz, po prostu zwiększ wersję danych i zastąp wersję sformatowaną. –

+0

To może pomóc - http://stackoverflow.com/questions/1990512/add-comma-to-numbers-every-three-digits-using-jquery –

Odpowiedz

38

Demo roboczahttp://jsfiddle.net/4v2wK/

Zapraszam ją zmienić bardziej do potrzeb użytkownika, można też spojrzeć na formater waluty nadzieję, że to będzie pasować zapotrzebowanie :)

kod

// Animate the element's value from x to y: 
    var $el = $("#el"); //[make sure this is a unique variable name] 
    $({someValue: 40000}).animate({someValue: 45000}, { 
     duration: 3000, 
     easing:'swing', // can be anything 
     step: function() { // called on every step 
      // Update the element's text with rounded-up value: 
      $el.text(commaSeparateNumber(Math.round(this.someValue))); 
     } 
    }); 

function commaSeparateNumber(val){ 
    while (/(\d+)(\d{3})/.test(val.toString())){ 
     val = val.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); 
    } 
    return val; 
    } 

** wyjście * enter image description here

+0

jakikolwiek pomysł, dlaczego ta liczba nie jest taka sama? Robię wokół koła wokół wyjścia. –

+0

Hiya @AdrianFlorescu umm jak masz na myśli, przepraszam, nie jestem pewien, o co pytasz? ':)' masz na myśli dlaczego wyjście nie mówi na przykład: 44,444? tak: http://jsfiddle.net/hVpqD/ –

+0

@ Tats_innit dokładnie, ale wygląda na to ze względu na animowane kroki. Zastąpiłem wartość w komplecie z oryginalną wartością. complete: function() { where.text (endNr); } http://jsfiddle.net/5yBt8/10/ –

10

Należy również dodać kompletną funkcji, takich jak:

step:function(){ 
    //.. 
}, 
complete:function(){ 
    $el.text(commaSeparateNumber(Math.round(this.someValue))); 
} 

Updated Fiddle: Demo

+0

Dlaczego? Jestem prawie pewien, że funkcja 'step' zostanie wywołana nawet w ostatnim kroku animacji. Funkcja 'complete' służy do dołączenia wywołania zwrotnego do uruchomienia po wykonaniu wszystkich kroków. – Bungle

+0

Czasami nie był to dobry wynik końcowy, był losowy na końcu, czasami 45000, czasem 4995 i tak dalej, więc dodałem tę funkcję, a teraz działa dobrze. Dzięki! –

Powiązane problemy