0

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

据我所知,它有效。我的问题是:你预见到这有什么问题吗?如果没有,有没有更干净的方法来写这一切?

我将不胜感激任何和所有的答复。

干杯,科林

4

3 回答 3

2

与所有编程功能一样,您的朋友。我在谷歌搜索填充零 javascript 并被定向到该站点

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);
于 2011-03-07T04:41:06.087 回答
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,还有这个有用方法的其他实现。

于 2011-03-07T04:46:24.223 回答
0

为什么不将数字的日志(以 10 为底)作为要添加多少位数的指标。

如果 log(N) 介于 0 和小于 1 之间,则 N 是一位数。
如果 log(N) 大于或等于 1 但小于 2,则 N 为两位数,依此类推。

我实际上并没有用 JavaScript 编写代码,所以我不知道你是否可以访问日志函数,但如果你这样做了,这是获得结果的一种非常简洁的方法。

约翰·多纳

于 2011-03-07T04:45:58.980 回答