2011-08-29 77 views
1

原諒這個新手問題(Javascript中的新手!)。隱含類型變量的javascript問題

在HTML頁面中我有一組的名稱和圖像的數量:IMG1 IMG2 IMG3 ... img12 ... 而且還有一個JS的功能,我需要從(比方說)IMG5迭代持續img。

如果我寫:

function iterateImg(objImgID) {var imgNum = objImgID.replace("img",""); 
    for (i=imgNum+1;i<20;i++) 
    .../... 

的變量 「i」 被當作字符串,和i + 1個接收的值 「51」,如果傳遞的對象的ID是IMG5。

當然,我仍然可以從1到n進行迭代,只在我的值達到6時執行所需的任務,但這將是一個難題。

我該如何解決這個問題?我怎樣才能創建一個變量,將其作爲種子處理之前將被視爲一個整數? 此外,你會推薦什麼樣的最佳做法?

+0

不要忘了申報的「i」與變種。如果你不這樣做,'我'可能會被附加到全局範圍(窗口)。 – Evert

回答

1
var imgNum = Number(objImgID.replace("img","")); 

這樣做。

或者更好的是(因爲我愛正則表達式)

var imgNum = Number(objImgID.match(/[0-9]+/)); 
+0

夥計們,我必須把你們全都拿走! 4分在不到10分鐘的時間內回答,那太棒了! –

+0

使用'Number'和'parseInt'之間是否存在功能差異,還是僅僅是風格問題? – JaredPar

+0

對於那些有興趣的人。它看起來至少有一個小的功能差異。例如'Number(true)=== 1'和'parseInt(true)'導致NaN – JaredPar

0

有幾種方法可以強制的JavaScript將其轉換爲數字

  • parseInt(x, 10) - 10是多少
  • 的基礎
  • x - 0 - 減法僅適用於數字
  • x * 1 - 也乘以
0
var imgNum = parseInt(objImgID.replace("img",""), 10); 

現在,當你這樣做var i=imgNum+1,它將執行另外的2個整數。

+1

ok,那麼爲什麼你們使用'parseInt()'而不是'Number()'?我會假設有某種速度方面或某種東西? –

+0

@約瑟夫,表現會非常相似,但如果你對具體數字感興趣,請看看這裏:http://jsperf.com/number-vs-parseint-vs-plus/3 –

1

使用parseInt將字符串轉換爲數字

var imgNum = parseInt(objImgID.replace("img", ""));