在JavaScript中添加逗号作为千位分隔符 - 输出被删除
在JavaScript中添加逗号作为千位分隔符 - 输出被删除
我正在尝试动态调整输入的数值以包括千位分隔符。
以下是我的代码:
function addCommas(nStr) { nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; }
然而,当我输入四位数后的数字时,字段会被清空。
我在哪里出错了?如果有jQuery解决方案,我已经在我的网站上使用了。
问题的原因是代码中的变量名混淆。在函数中,变量名`input`被错误地赋值给了变量`output`,导致输出被删除。解决方法是将赋值操作改为`output = new String(input)`。
以下是整理后的文章:
在JavaScript中,如果要为数字添加千位分隔符,可以使用字符串的分割、反转和替换操作来实现。下面是一个示例代码:
function addThousandsSeparator(input) { var output = input; if (parseFloat(input)) { output = new String(input); // 将input转换为字符串 var parts = output.split("."); // 移除小数部分 parts[0] = parts[0].split("").reverse().join("").replace(/(\d{3})(?!$)/g, "$1,").split("").reverse().join(""); output = parts.join("."); } return output; } addThousandsSeparator("1234567890"); // 返回 1,234,567,890 addThousandsSeparator("12345678.90"); // 返回 12,345,678.90
然而,上述代码中存在一个问题。在函数中,变量名`input`被错误地赋值给了变量`output`,导致输出被删除。为了解决这个问题,我们需要将赋值操作修改为`output = new String(input)`。
通过以上修改,代码将能够正确地为数字添加千位分隔符。