0

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

这是我所拥有的:

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

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

***没有库,请纯javascript。

有任何想法吗?

4

3 回答 3

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;
}
于 2013-04-16T20:36:47.027 回答
3

您需要哈希,而不是查询字符串。# 之后的任何内容都称为 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
于 2013-04-16T20:19:55.407 回答
2

在 JavaScript 中,document.location.search包含查询参数。您可以使用正则表达式来解析出您需要的部分。但是,在您示例中的 URL 中,它不是查询字符串,而是在document.location.hash.

于 2013-04-16T20:18:36.907 回答