2011-03-07 62 views
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}}; 

它的工作原理是盡我所能告訴。我的問題是這樣的:你有沒有預見到這個問題,如果不是有更清晰的方式來寫這一切?

我會感謝任何和所有答覆。

乾杯, 科林

回答

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); 
+0

+1一個體面的反應 - 我不知道如果Javascript有一個問題,字符串concat是非常緩慢的大型重複或不(一個JS傢伙)。如果「長度」會很大,那麼可能需要找到更有效的方法。但功能的可讀性彌補了緩慢,特別是如果「長度」將一直很小。 – corsiKa 2011-03-07 04:47:10

+0

太棒了!非常感謝。你知道我通常不會求助張貼因爲我知道那裏的答案,我想'填充'一詞完全滑倒我的腦海。再次感謝。 – 2011-03-07 04:48:09

+0

這是一個有效的批評,Gareve下面有一個很好的選擇。 – 2011-03-07 04:49:36

0

你爲什麼不只是把日誌(基10)的數字作爲要添加多少位的指示符。

如果log(N)在0到小於1之間,N是一位數字。
如果log(N)大於或等於1但小於2,則N有兩位數字,依此類推。

我實際上並沒有用JavaScript編寫代碼,所以我不知道你是否可以訪問日誌功能,但是如果你這樣做,這是一個非常簡單的方法來獲得結果。

約翰·多納

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,再加上有這個有用的方法的其他實現。

+0

你知道我以前在其他應用程序中使用過sprintf(),但從來沒有想過用javascript實現它,我猜我只是沒想到我能。這將爲我節省大量的時間。萬分感謝。 – 2011-03-07 04:57:55