簡體   English   中英

百萬價值給 NaN 與 jquery CounterUp

[英]Million value giving NaN with jquery CounterUp

我有一個格式為2.083.817的值。 使用 jquery 腳本 CounterUp 時,它給了我一個 NaN - 可能是因為兩個“。” 分隔符。

該值正在轉換為:

var nums = [];
var divisions = $settings.time / $settings.delay;
var num = $this.text();
var isComma = /[0-9]+,[0-9]+/.test(num);
num = num.replace(/,/g, '');
var isInt = /^[0-9]+$/.test(num);
var isFloat = /^[0-9]+\.[0-9]+$/.test(num);
var decimalPlaces = isFloat ? (num.split('.')[1] || []).length : 0;

我不太確定如何讓腳本處理帶有兩個“.”的值。 分隔符。

大多數情況下,解決方案非常接近,您將很難找到它。

for (var i = divisions; i >= 1; i--) {

      // Preserve as int if input was int
     var newNum = parseInt(num / divisions * i);

      // Preserve float if input was float
        if (isFloat) {
            newNum = parseFloat(num / divisions * i).toFixed(decimalPlaces).replace(".", ",");
       }

                    // Preserve commas if input had commas
                    if (isComma) {
                        while (/(\d+)(\d{3})/.test(newNum.toString())) {
                            newNum = newNum.toString().replace(/(\d+)(\d{3})/, '$1' + '.' + '$2');
                        }
                    }

                    nums.unshift(newNum);
                }

我只是將其反轉,因此在 html 中它將是 2,083,817,然后將“,”替換為“。” 以獲得所需的輸出。 可能不是最完美的解決方案,但它有效。

雖然我認為有一個更簡單的方法,你可以去

Number("2.083.817".replace(new RegExp("\\.", 'g'), ""))

或者一般地

Number(number_variable.replace(new RegExp("\\.", 'g'), ""))

如果您要在循環中應用此替換,我建議您之前將regex存儲到變量中。 喜歡:

regex_replacement = new RegExp("\\.", 'g')

for ....... {
    actual_number = Number(number_variable.replace(regex_replacement, ""))
}

PS:改編自javascript replaceAll 問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM