如何从url解析哈希参数

JavaScript - how to parse hash parameters from url?

本文关键字:哈希 参数 url      更新时间:2023-09-26

如何使用js获得URL散列的一部分?

我有:

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

我需要得到"123"作为一个变量…

***没有库,请使用纯javascript。

任何想法?

您需要的是散列,而不是查询字符串。#之后的任何内容都称为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

这里有一些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;
}

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