formatNumber函数在IE8中失败,显示3.3500.3500000而不是3.500.000
formatNumber function fails in IE8 showing 3.3500.3500000 instead of 3.500.000
我目前有一个formatNumber
函数,它接受一个数字并应用一些小数。除了IE8,它对我来说都很好用。
下面的例子由于某些原因打印出:3.3500.3500000在IE8中而不是3.500.000,这也是应该的。
你知道是什么出了问题吗?
function formatNumber(3500000)
{
var numString = myNum.toString();
var result = '';
while (numString.length > 3)
{
var chunk = numString.substr(-3);
numString = numString.substr(0, numString.length - 3);
result = '.' + chunk + result;
}
if (numString.length > 0)
{
result = numString + result;
}
return result;
}
将var chunk = numString.substr(-3);
改为
var chunk = numString.substr(numString.length - 3, 3);
Q知道这里可能失败的是什么吗?
A我相信IE8 javascript不不支持负值作为substr
方法的参数。我认为这就是问题的根源。
也就是说,第一次通过循环时,substr(-3)
被解释为substr(0)
,结果是您得到整个字符串,而不是字符串的最后三个字符。这就解释了您所看到的结果。