Javascript 如何在JS中获取URL中的#散列值

Javascript 如何在JS中获取URL中的#散列值,javascript,url,Javascript,Url,例如,我的URL为: 我希望js代码只返回value2x。 我尝试了location.hash.split('=')[1],但结果是第一个哈希值,就像url是 它返回fdg&hash。 我只需要散列的值 请不要用jQuery 提前谢谢你的帮助。怎么样 location.hash.split('hash=')[1].split('&')[0] 这将在hash=处拆分散列,并在hash=之后和任何其他参数之前获取值。在&上拆分,然后在=上拆分: function getHashValu

例如,我的URL为:

我希望js代码只返回
value2x
。 我尝试了
location.hash.split('=')[1]
,但结果是第一个哈希值,就像url是

它返回
fdg&hash
。 我只需要
散列的值

请不要用jQuery

提前谢谢你的帮助。

怎么样

location.hash.split('hash=')[1].split('&')[0]

这将在
hash=
处拆分散列,并在hash=之后和任何其他参数之前获取值。

&
上拆分,然后在
=
上拆分:

function getHashValue(key) {
  var matches = location.hash.match(new RegExp(key+'=([^&]*)'));
  return matches ? matches[1] : null;
}

// usage
var hash = getHashValue('hash');
pairs = location.hash.substr(1).split('&').map(function(pair) {
    var kv = pair.split('=', 2);
    return [decodeURIComponent(kv[0]), kv.length === 2 ? decodeURIComponent(kv[1]) : null];
})
这里的
pairs
将是一个数组数组,其键位于
0
,值位于
1

[["hfh","fdg"],["hash","value2x"]]

如果你正在做大量的url操作,那么你应该检查一下

访问url哈希中的参数

    $.url('http://www.google.com/#hfh=fdg&hash=value2x').fparam('hash');
或者如果它的当前url

    $.url().fparam('hash');
希望对您有所帮助

location.parseHash=function(){
location.parseHash = function(){
   var hash = (this.hash ||'').replace(/^#/,'').split('&'),
       parsed = {};

   for(var i =0,el;i<hash.length; i++ ){
        el=hash[i].split('=')
        parsed[el[0]] = el[1];
   }
   return parsed;
};

var obj= location.parseHash();
    obj.hash;  //fdg 
    obj.hfh;   //value2x
var hash=(this.hash | | |').replace(/^#/,'').split('&'), 解析={};
对于(var i=0,el;i),可以为此重用URLSearchParams类

var urlParams = new URLSearchParams(window.location.hash.replace("#","?"));
var hash = urlParams.get('hash');

这将在
hash=
之后产生所有结果。应该注意的是,如果没有hash或密钥不存在,这将导致错误。@xdazz:正如Hectron所说,如果没有hash,则会引发TypeError,因此您应该检查
match
方法返回的数组的长度,并且只有当该数组的长度为greate时才对其进行索引r大于或等于2。如果不是,则应返回空字符串或null(或未定义)。还应注意“key”将由正则表达式解析器解释,因此如果合法密钥包含一个点或一个大括号,则会导致结果与预期不同,甚至出现错误。应更正如下:返回匹配项和匹配项。长度===2?匹配项[1]:null;此原样不起作用,使其
location.href.split('hash=')[1]。拆分('&')[0]
worksNeed to test more,Upvoting now这很有帮助,我以前也知道了,很抱歉我之前没有指定,但我不想使用jQuery。或者你也可以使用
window.location.hash.slice(1)
来代替。该代码不正确。与其将“#”替换为“?”,不如将“#”替换为“#”。因此,用slice替换(“#“,“?”)(1) @Clox不,这只会将散列部分中的第一个键与参数部分中的最后一个值合并,或者将其与路径合并。要么#需要替换为?(如果没有url参数)要么替换为&(如果已经有参数)。但无论如何,这是一种不好的方法,因为您也会提取url参数。