2013-04-26 12 views
9

私はページ上の要素内の数字をインクリメントしようとしています。しかし、1000番目の値にコンマを入れるには数字が必要です。 (45,000ではなく45000)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> 

アニメーションをコンマで増やすにはどうすればよいですか?

+0

この http://stackoverflow.com/questions/7327046/jquery-number-formattingを見てください:フィドル更新

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

を –

+0

私は、数値をデータ属性に格納し、その要素にカンマでフォーマットされたバージョンを表示します。インクリメントするときは、データバージョンを増やして、フォーマットされたバージョンを置き換えてください。 –

+0

これはあなたに役立つかもしれません - http://stackoverflow.com/questions/1990512/add-comma-to-numbers-every-three-digits-using-jquery –

答えて

38

ワーキングデモhttp://jsfiddle.net/4v2wK/

あなたの必要性のためのより多くのそれを変更すること自由に感じ、あなたも、これはあなたの必要性:)

コード

// 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; 
    } 
に合う通貨フォーマッタ、希望を見ることができます

**出力* enter image description here

+0

なぜ番号が同じではないか考えてみませんか?私はアウトプットの周りを回っています。 –

+0

こんにちは@AdrianFlorescuまあ、どういう意味ですか、何が頼んでいるのかよく分からないのですか? ':)'あなたはなぜ出力が例ではないかを意味します:44,444? http://jsfiddle.net/hVpqD/ –

+0

@Tats_innit正確には、このように見えますが、アニメーションの手順が原因です。完成時の値を元の値に置き換えました。完了:function(){ where.text(endNr); ステップ::関数(){// ... }、 完全:機能(){$ エル0​​} http://jsfiddle.net/5yBt8/10/ –

10

また、のような完全な機能を追加する必要があります:Demo

+0

なぜですか?最後のアニメーションステップでも 'step'関数が呼び出されることは間違いありません。 'complete'関数は、すべてのステップが完了した後にコールバックをアタッチするために使用されます。 – Bungle

+0

最終的に良い結果が得られなかったこともありましたが、最終的には無作為で、時には45000、時には4995などとなりましたので、この機能を追加しました。ありがとう! –