20

例如,我有一个 URL:

http://www.google.com/#hash=value2x

我想要一个 js 代码只返回value2x. 我试过location.hash.split('=')[1]了,但结果是第一个哈希值,比如 url 是

http://www.google.com/#hfh=fdg&hash=value2x

它返回fdg&hash。我只想要hash.

请不要 jQuery。

我在这里先向您的帮助表示感谢。

4

7 回答 7

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

// usage
var hash = getHashValue('hash');
于 2012-08-12T08:26:17.557 回答
11

可以为此目的重用 URLSearchParams 类。

var urlParams = new URLSearchParams(window.location.hash.replace("#","?"));
var hash = urlParams.get('hash');
于 2018-11-01T11:25:42.610 回答
5

怎么样

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

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

于 2012-08-12T08:24:09.683 回答
2

如果您正在进行大量的 url 操作,那么您应该查看JQuery URL plugin

访问 url 哈希中的参数

    $.url('http://www.google.com/#hfh=fdg&hash=value2x').fparam('hash');

或者如果它的当前网址

    $.url().fparam('hash');

希望能帮助到你

于 2012-08-12T08:33:16.990 回答
2
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
于 2012-08-12T09:33:42.063 回答
1

拆分&,然后拆分=

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将是一个数组数组,其中键为 at 0,值为 at 1

[["hfh","fdg"],["hash","value2x"]]
于 2012-08-12T08:31:34.127 回答
0

如果网址有?http ://www.google.com/#?hash=value2x

代码可以是:

const url = 'http://www.google.com/#?hash=value2x';
new URLSearchParams(
  (
    new URL(url)
  ).hash.slice(1).split('?')[1]
).get('hash');

或者如果url没有?

const url = 'http://www.google.com/#hash=value2x';
(new URLSearchParams((new URL(url)).hash.slice(1))).get('hash')
于 2021-11-01T11:57:33.647 回答