使用javascript可以从URL获取变量。像这样:
function getQueryVariable(variable){
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
网址是http://www.example.com/index.php?id=1&image=pic.jpg
,然后调用getQueryVariable("id")
返回1
,getQueryVariable("image")
返回pic.jpg
。
我想知道一种利用布尔变量的方法。我希望函数返回true
或false
是变量存在。因此,使用网址http://www.example.com/index.php?id
调用getQueryVariable("id")
会返回true
。如果?id
不存在,那么我希望它返回false
。
此特定功能来自CSS-Tricks。
我正在使用这个我没写过的功能,我担心我不理解它,也不记得它来自哪里:
function getUrlVar(key){
var result = new RegExp(key + "=([^&]*)", "i").exec(window.location.search);
return result && unescape(result[1]) || "";
}
答案 0 :(得分:1)
如果vars[i]
不包含=
,pairs
将只包含一个元素。在这种情况下,pair[1]
将返回undefined
。解决这个问题的一个简单方法就是改变这个:
if(pair[0] == variable){return pair[1];}
对此:
if(pair[0] == variable){return pair.length == 1 || pair[1];}
因此,如果url参数与?id
类似,则返回值为true
,否则为=
符号后面的值。
答案 1 :(得分:0)
我认为最好通过以下方式将URL路径的查询部分转换为关联数组:
function createQuerySlots() {
var query = window.location.search.substring(1);
var querySlotsAsStrings = query.split("&");
var querySlotArray = [];
var querySlots = {};
for (var i=0; i < querySlotsAsStrings.length;i++) {
querySlotArray = querySlotsAsStrings[i].split("=");
querySlots[querySlotArray[0]] = querySlotArray[1];
}
return querySlots;
}
然后,您可以检索查询变量值:
querySlots = createQuerySlots();
value = querySlots.variable;
您可以测试是否存在(布尔)变量:
value = ("id" in querySlots);
答案 2 :(得分:0)
您可以按如下方式修改功能:
function getQueryVariable(variable){
var query = window.location.search.substring(1),
vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){
return true; // return true if match found
}
}
return false; // no match found
}