2017-07-14 37 views
0

我已經部署了火力網站工作正常。我的問題是下一個: 裏面我main.js我有一個名爲company變量。有沒有辦法根據URL設置該變量?例如:設置一個變量與URL

site-ce207.firebaseapp.com/company=01 

或者你知道另一種方式嗎?

+2

是的,你已經使用但是例如,將無法正常工作。使用'http:// www.example.com /#company = 01'或'http://www.example.com/?company=01將會工作。您可以使用正則表達式或'location'對象中的方法獲取值。請注意,這些選項不是他們打算如何使用的。所以可能會出現副作用。 – Mouser

+1

而是將它作爲一個參數,也可以考慮將它們傳遞路徑'site-ce207.firebaseapp.com /公司/ 01'標識符。根據你想用這個URL來完成的事情,後者可能會更習慣。 –

回答

3

正如Mouser的指出,這是無效的:

site-ce207.firebaseapp.com/company=01 

然而,這個心不是:

site-ce207.firebaseapp.com#company=01&id=5 

,它可以很容易地分析:

var queries=location.hash.slice(1).split("&").map(el=>el.split("=")); 

查詢now.looks像這樣:

[ 
["company","01"], 
["id","5"] 
] 

因此,要解決這個問題可以不使用對象:

var getQuery={}; 
queries.forEach(query=>getQuery[query[0]]=query[1]); 

所以,現在很容易獲得某個鍵:

console.log(getQuery["company"]); 

還是新的,使用地圖更容易:

var query=new Map(queries); 
console.log(query.get("company")); 
+0

工作了不起!只是一件事:由於公司是第一個項目,它是「#公司」而不是「公司」。所以通過query.get(「#company」)解決。 – Ace

+0

@Ace的權利,編輯切片走了... –

+0

請編輯你的問題,沒有箭頭函數,因爲它們還不常見。 – Mouser

0

我有一個簡單的功能,我發現了一個很久以前就處理這個問題。我修改了一下,通過這樣做來獲得價值。

function param(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

,然後用我做的值時發出的東西時,像下面

var myCity = param('cityid'); 

http://example.com/?cityid=Guatemala

myCity將有「危地馬拉」在我的應用程序的價值。