<script type="text/javascript">
var m$ = jQuery.noConflict();
m$(document).ready(function(){
num = 623000;
prev = 623556;
subtract = num - prev;
subtract /= 24;
subtract /= 60;
subtract /= 60;
var timerID = setInterval(function() {
if(num > 0){
subtract *= 1000;
subtract = Math.round(subtract);
subtract /= 1000;
num -= subtract;
num *= 10000;
num /= 10000;
num = Math.round(num).toFixed(3);
m$('.dynamic').html(addCommas(num));
}
else {
clearInterval(timerID);
}
}, 1000 );
});
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;
}
</script>
通过从num减去变量减去每秒更新的股票代码。不幸的是,它不再下降。当我没有尝试使用toFixed()将零保持在小数位时,我已经把它弄好了。
我用Google搜索了它并说它应该通过执行以下操作来使用字符串:
numstr = Math.round(num + "").toFixed(3);
这也不起作用,有一次我得到了NaN。
答案 0 :(得分:1)
您的num
为623000且subtract
仅为-0.006,而您在循环中舍入num
。那么,你期待什么? Math.round(623000 - (-0.006)) = 623000
并且它总是相同的数字。
如果你想为前缀加零,那么你应该在输出中做,而不更新保存数值的变量。
ps:
的目的是什么num *= 10000;
num /= 10000;
?可能num = Math.round(num)
应该在他们之间,这就是你问题的原因吗?
您可以使用此功能填充前导零的数字
function pad(number, length) {
var str = '' + number;
while (str.length < length) {
str = '0' + str;
}
return str;
}
或查看此主题How to output integers with leading zeros in JavaScript