我是Javascript的新手,到目前为止只是通过关注教程和阅读论坛,但这一次真的让我困扰了一段时间。
基本上我想要一个包含七位数的数字的计数器,我找到了一些东西,但没有一个真的对我有意义所以我写了这个:
imgNumber++;
if (imgNumber < 10){function add(number){return '00000' + number}};
if (imgNumber > 10 && imgNumber < 100){function add(number){return '0000' + number}};
if (imgNumber > 100 && imgNumber < 1000){function add(number){return '000' + number}};
if (imgNumber > 1000 && imgNumber < 10000){function add(number){return '00' + number}};
if (imgNumber > 10000 && imgNumber < 100000){function add(number){return '0' + number}};
if (imgNumber > 100000 && imgNumber < 1000000){function add(number){return '' + number}};
据我所知,这是有效的。我的问题是:你是否预见到这方面的任何问题,如果没有,是否有更清晰的方式来写这一切?
我会感谢所有回复。
干杯, 科林
答案 0 :(得分:2)
与所有编程功能一样,是你的朋友。我搜索谷歌搜索填充零javascript并被定向到this site。
function pad(number, length) {
var negative = number < 0;
var str = '' + Math.abs(number);
while (str.length < length) {
str = '0' + str;
}
if(negative) str = '-' + str;
return str;
}
使用它你只需要生成你的数字标准,在存储/输出它之前你将通过这个函数运行它:
pad(1,7);
答案 1 :(得分:1)
一个班轮:
var output = sprintf("%07d", 30);
相信我,它会在javascript(以及其他语言)中节省大量时间。您可以在http://sprintf.googlecode.com/files/sprintf-0.7-beta1.js
下载该实施到今天,这段代码现在正常工作,也许您需要更改库的src以获得更新:
<script type="text/javascript" src="http://sprintf.googlecode.com/files/sprintf-0.7-beta1.js"> </script>
<script type="text/javascript" >
alert(sprintf("%04d",4));
</script>
更多信息,here,以及此有用方法的其他实现。
答案 2 :(得分:0)
为什么不直接将数字的日志(基数为10)作为要添加的位数的指示符。
如果log(N)介于0和小于1之间,则N是一位数字 如果log(N)大于或等于1但小于2,则N有两位数,依此类推。
我实际上并不是用JavaScript编写代码,所以我不知道你是否可以访问日志函数,但如果你这样做,这是一种非常简洁的方法来获得结果。
John Doner