多位数的计数器

时间:2011-03-07 04:36:43

标签: javascript counter digits

我是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}};

据我所知,这是有效的。我的问题是:你是否预见到这方面的任何问题,如果没有,是否有更清晰的方式来写这一切?

我会感谢所有回复。

干杯, 科林

3 个答案:

答案 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