2015-05-21 34 views
1

我有一個畫廊網站中的每一個畫廊圖像通過像這樣一個url表示:使用javascript檢查url內的數字?

http://www.example.com/gallery/my-photos#10

http://www.example.com/gallery/my-photos#11

http://www.example.com/gallery/my-photos#12

。 。 。 。 。

我創建了一個條件語句來防止用戶無效的url。

var galleryNum = window.location.hash.substring(1); 

if(typeof(galleryNum) == "string" || typeof(galleryNum) == "NaN"){ 
    console.log('this is not a number'); 
}else if(typeof(galleryNum) == "number"){ 
    console.log('this is a number'); 
} 

然而,這並不工作,我從window.location.hash.substring(1)將永遠是一個字符串,無論我輸入數字或字符串獲得的價值。

回答

3

,如果你想獲得數量,你應該使用:

parseInt(galleryNum,10) 

,如果你想檢查galleryNum是否是數字或沒有,你可以使用:

isNaN(parseInt(galleryNum,10)) 
+3

你應該添加的基數參數:'parseInt函數(galleryNum,10)' –

+0

是的,你definitley應該使用基數參數它在舊版本的ecmascript中做了一些不需要的事情。 – John

+0

@RobM。是的,謝謝你的提醒。 – Yangguang

3

嘗試利用.test()

if(/\d/.test(galleryNum)) { 
    // `Number` 
} else { 
    // not `Number` 
} 
2

沒有「NaN」類型。事實上,儘管NaN代表Not-a-Number,它實際上是一個數字:typeof NaN === 'number'

但是,您可以使用isNaN()來測試NaN。 要測試從URL返回的字符串可以轉換爲數字,使用parseInt函數:

var galleryNum = parseInt(window.location.hash.substring(1),10); 
if (typeof(galleryNum) === 'number' && !isNan(galleryNum)) { 
    // got a number here 
} 
+0

這是真的,但它仍然不能解決他的問題。 – John

+0

你說得對。我關注的是他的問題中不相關的部分。 – illuminaut

+0

沒關係,對他來說,無論哪種方式都很好。儘管如此,它可能更適合作爲評論。 – John