JavaScript - 如何从url解析哈希参数?

时间:2013-04-16 20:17:02

标签: javascript

如何使用js获取URL哈希的一部分?

这就是我所拥有的:

something.html?il=#/new/product/123

我需要将“123”作为变量......

***没有图书馆,请使用纯JavaScript。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

以下是一些可以帮助您的Javascript。只需从getQuerystringNameValue()函数中获取返回值并使用$(“#textboxID”)。val(returnValue);将其分配给文本框。

alert("name1" + " = " + getQuerystringNameValue("name1"));
alert("name2" + " = " + getQuerystringNameValue("name2"));
alert("name3" + " = " + getQuerystringNameValue("name3"));


function getQuerystringNameValue(name)
{
    // For example... passing a name parameter of "name1" will return a value of "100", etc.
    // page.htm?name1=100&name2=101&name3=102

    var winURL = window.location.href;
    var queryStringArray = winURL.split("?");
    var queryStringParamArray = queryStringArray[1].split("&");
    var nameValue = null;

    for ( var i=0; i<queryStringParamArray.length; i++ )
    {           
        queryStringNameValueArray = queryStringParamArray[i].split("=");

        if ( name == queryStringNameValueArray[0] )
        {
            nameValue = queryStringNameValueArray[1];
        }                       
    }

    return nameValue;
}

答案 1 :(得分:2)

在JavaScript中,document.location.search包含查询参数。您可以使用Regular Expressions来解析所需的部分。但是,在您的示例中的网址中,它不是查询字符串,它是document.location.hash中的锚点。

答案 2 :(得分:2)

你需要哈希,而不是查询字符串。 #之后的任何内容都称为url的哈希值。

您可以使用document.location.hash并解析该字符串

var id = document.location.hash.split("/"); //convert the hash into an array, splitting with "/"
id = id.pop(); //pop will get the last item on the array

然而,这种方法可读且简单,假设您正在搜索的字符串始终是数组中的最后一个字符串是不安全的。您可以使用正则表达式来进一步缩小机会

var hash = document.location.hash,
    re = /\/new\/product\/(d+)/,
    id = hash.match(re);// for some reason this matches both the full string and the number
id = id.pop(); // so I must do this again