質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

3510閲覧

画面上で数字がカウントアップするjqueryについて

退会済みユーザー

退会済みユーザー

総合スコア0

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/06/14 01:08

jquery

1 function text_count(){ 2 var countElm = $('.count'), 3 countSpeed = 80; 4 5 countElm.each(function(){ 6 var target = $(this), 7 countMax = target.attr('data-num'), 8 thisCount = target.text(), 9 countTimer; 10 11 function timer(){ 12 countTimer = setInterval(function(){ 13 var countNext = thisCount++; 14 15 if(countNext == countMax){ 16 clearInterval(countTimer); 17 } 18 },countSpeed); 19 } 20 timer(); 21 }); 22 } 23

上記のコードで、数字がカウントアップしていきますが
「小数点」、「4桁になったら , を付属」を実現するには
どうしたらいいでしょうか

小数点 例)⇒ 12.3

4桁になったら , を付属 例)⇒ 1,234

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/06/14 02:15

提示のコードではカウントアップしたものが表示されませんが、転記される際に見落としはありませんか?
guest

回答2

0

ベストアンサー

根本的に小数点の計算をプログラムでしない方がいいです。バグの原因にしかならないから。
試しに0.1を10回足し合わせるプログラムを書いて出力すると1になりません。
あとインクリメント、デクリメントいずれも現在にプラス1しかしません。

なので、どうしてもやるなら小数以下と整数で分けて"."でくっ付ける。

0.1ずつカウントさせたいなら、1ずつ増えるプログラム書いて10になったら
10を1と0に分割して"."でくっつける。
100になったら 10と0で分割して"."でくっつける。
を考えるといいかと。そのままやると大変なことになるので、小数点以下を
何桁にするか規定し分割する。

あと、[,]区切りは正規表現などで。

以下にサンプル。

javascript

1// 仮に小数点以下を2桁とし、1になるまで0.01ずつ増えるプログラムを作成すると仮定 2var decimalSize = 2; 3var decimalIndex = 1; 4var integerIndex = 0; 5var decimalSeparator = "."; 6var integerSeparator = ","; 7 8function dump(num){ 9 console.log(num); 10} 11function stringFormat(str , separator){ 12 13 // 正規表現で置き換え 14 return str.replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1'+separator); 15} 16function linking(a,b,separator){ 17 return a+separator+b; 18} 19for(var count=0 ; count<101 ; count++){ 20 var countStr = count+""; 21 var countStrLen = countStr.length; 22 var paddingNum = "0"; 23 // 現在の桁数が整数表示なければそのまま表示してコンテにゅー 24 if(countStrLen<=decimalSize){ 25 // 0のパディングdecimalSize-1になるまでpadding 26 while(countStr.length<decimalSize) 27 {countStr=paddingNum+countStr;}; 28 dump( linking(paddingNum,countStr,decimalSeparator )); 29 continue; 30 } 31 // 小数部と整数部を分割 32 var decimalData= countStr.slice(countStrLen-decimalSize ); 33 var integerData= countStr.substr(0,countStrLen-decimalSize ); 34 // 整数値にフォーマット処理をしたものと連結 35 var dumpNum = linking(stringFormat(integerData),decimalData ,decimalSeparator ) 36 dump(dumpNum); 37} 38

投稿2017/06/14 02:48

kanimaru

総合スコア1013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

内部数値と表示でわけるとか。

JavaScript

1console.log((thisCount / 10).toLocaleString());

投稿2017/06/14 04:32

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問