2012-02-02 30 views
0

所以可以說我有一個url www.hello.com#一個設置基礎上,循環移位#of URL的變量 - window.location.hash

我知道我可以抓住具有價值

var hash = window.location.hash; 
alert (hash); 

而是然後寫(我知道下面是不propper代碼):

如果變種散列=一個然後設置變種散列值至1

別的

如果VAR哈希=兩人隨後設置VAR散列值至2

別人等等等等

有沒有更好的方式來寫這篇文章。

乾杯

回答

1
var map = { 
    one: 1, 
    two: 2 
}; 

var hashValue = map[hash.substring(1)]; 

這將設置散列值來undefined如果散列沒有出現在地圖存在。

+0

注意'location.hash'將包含''#以及。 – 2012-02-02 15:57:05

+0

對不起,不能確定你的意思我累了:var hash = window.location.hash; var map = { one:1, two:2 }; var hashValue = map [hash]; alert(hashValue); – odd 2012-02-02 15:58:22

+0

@FelixKling好的。更新,謝謝! – Dogbert 2012-02-02 15:58:40

1

您也可以使用switch塊來做到這一點。

switch(location.hash.replace('#', '')){ 
    case "one": newhash = 1; 
    break; 
    case "two": newhash = 2; 
    break;  
}; 
alert (newhash); 
+0

感謝這個我也喜歡這個版本 – odd 2012-02-02 16:11:08

1

其實哈希返回的哈希值,包括#號

所以哈希=「#一個」不「一」。除此之外,您可以使用開關盒 開關(散列) case'#one': hashVar = 1; case'#two' hashVar = 2; }

,如果你願意改變哈希風格說#TAB1#物品1或者乾脆#代替#one什麼1,U反芻獲得數很容易地

var hash = window.location.hash;//hash=#tab1 say 
var number=hash.replace('#tab',""); 
alert(number); 

就是這樣。這樣,這個數字可以像你想要的那樣大。在第一種情況下,你必須手動分配變量每個號碼

因此,如果有100個項目,你就會有一個很長的名單

+0

謝謝,我知道我只會有約4但生病也保留這一個 – odd 2012-02-02 16:20:07