お世話になります。
表題の件でコードを書いたのですが希望通りに動作をしてくれず問題があります。
【問題】
カウントアップ上限の桁数を増やすと「億」が二回入ってしまう
恐らく正規表現の書き方が間違っている
例) 00億1234兆5678億0000万
上記を
001234兆5678億0000万
になるようにしたいです。
javascript
1 2$(function(){ 3new JSCODE.COUNT.CountUp(this); 4}); 5 6JSCODE.COUNT.CountUp = function(ele) { 7 this.$target = $(ele); 8 this.init(); 9}; 10 11JSCODE.COUNT.CountUp.prototype = { 12 13 init: function(){ 14 COUNT_MAX = 123456789; //カウント上限 15 SPEED = 999; //カウントアップの速度 16 this.$countUp = this.$target.find('#countBox'); 17 this.bindEvent(); 18 }, 19 20 bindEvent: function(){ 21 self = this; 22 this.countEvent(); 23 }, 24 25 countEvent: function(){ 26 var randamNum = 0; 27 28 var jsCountUp = setInterval(function(){//ループ 29 randamNum = randamNum + Math.floor( Math.random() * 4000000 ); 30 countText = String(randamNum); 31 32 if(randamNum >= COUNT_MAX){//止める処理 33 _self.$countUp.text(_self.shapingNum(String(COUNT_MAX))); 34 clearInterval(jsCountUp); 35 }else{ 36 _self.$countUp.text(_self.shapingNum(countText)); 37 } 38 39 } , SPEED ); 40 }, 41 42 shapingNum: function(num){//数字に「億、兆」を挿入 43 num = num.replace(/\B(?=(\d{8})+(?!\d))/g, '兆'); 44 num = num.replace(/\B(?=(\d{4})+(?!\d))/g, '億'); 45 return num + '万円'; 46 } 47 48}; 49 50 51 52
コンストラクタ部も提示して下さい
グローバル変数「self」にオブジェクトを突っ込むのはおやめ下さい. window.selfには意味があります. https://developer.mozilla.org/ja/docs/Web/API/Window/self
追記しました。よろしくお願いします