2010-05-16 55 views

回答

1

这应该做的伎俩

// include this somewhere available 
var Query = (function(){ 
    var query = {}, pair, search = location.search.substring(1).split("&"), i = search.length; 
    while (i--) { 
     pair = search[i].split("="); 
     query[pair[0]] = decodeURIComponent(pair[1]); 
    } 
    return query; 
})(); 


var v= Query["v"] 

这一次运行其计算与名称创建一个对象/值对与提供的参数相对应

+0

不错的 - 只需要解码一次,而不是其他的帖子。 – mplungjan 2010-05-16 13:11:38

+1

这不适用于多个值。它可以解决这个特定的问题,但不是一个通用的解决方案。 – Guffa 2010-05-16 13:34:03

+0

Guffa:什么?去阅读你的DOM/JavaScript。搜索字段从未打算传达具有相同名称的多个参数。 – 2010-05-16 13:35:16

0

here

function getURLParam(strParamName){ 
    var strReturn = ""; 
    var strHref = window.location.href; 
    if (strHref.indexOf("?") > -1){ 
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase(); 
    var aQueryString = strQueryString.split("&"); 
    for (var iParam = 0; iParam < aQueryString.length; iParam++){ 
     if (
aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1){ 
     var aParam = aQueryString[iParam].split("="); 
     strReturn = aParam[1]; 
     break; 
     } 
    } 
    } 
    return unescape(strReturn); 
} 

要使用它:

var v = getURLParam('v') 
+0

location.search给你的?xxxx部分 - 如果没有location.search,没有questionmarks – mplungjan 2010-05-16 13:16:56

0

可以使用这样的函数:

function querystring(key) { 
    var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi'); 
    var r=[], m; 
    while ((m=re.exec(document.location.search)) != null) r.push(m[1]); 
    return r; 
} 

实施例:

var v = querystring('v')[0]; 

该函数返回与所述查询串中发现的所有值的数组。如果您有一个查询字符串,例如?x=0&v=1&v=2&v=3,则电话号码querystring('v')会返回包含三个项目的数组。

+0

window.location.search是我认为使用的文件 document.location现在是document.URL – mplungjan 2010-05-16 13:18:14

0

这是我简单的片断:

function extractParamValue(url, name) { 
    var pos = url.indexOf(name+'=')+name.length+1; 
    var value = url.substring(pos, url.indexOf('&', pos)); 
    return value; 
}