如何在哈希符号后获取多个URL变量的值

时间:2015-07-25 11:12:31

标签: javascript url url-parameters

我们说我有这个网址:

http://www.example.com/#articles/123456/

我希望在#中的JS之后获取值。

以下是: 文章 123456

我能够使用以下方法获取整个字符串:

var type = window.location.hash.substr(1);

结果是: 文章/ 123456 /

有没有办法单独获取每个变量?

提前致谢。

3 个答案:

答案 0 :(得分:2)

我认为这是你要找的东西。

$('#btn').on('click', function(){
    var url = 'http://www.example.com/#articles/123456/';
    var bitAfterHash = url.split('#').pop();
    var parts = bitAfterHash.split('/');
    var firstPart = parts[0];
    var lastPart = parts.pop() == '' ? parts[parts.length - 1] : parts.pop();
    $('p').html(firstPart + ' : ' + lastPart);
});

<强> DEMO

希望这有帮助。

编辑:或在您传递网址的普通js函数中。

function getUrlParts(url){
    var bitAfterHash = url.split('#').pop();
    var parts = bitAfterHash.split('/');
    var firstPart = parts[0];
    var lastPart = parts.pop() == '' ? parts[parts.length - 1] : parts.pop();
    document.getElementById('text').innerHTML= firstPart + ' : ' + lastPart;
};

答案 1 :(得分:2)

使用String.prototype.split()

var type = window.location.hash.substr(1);
var parts = type.split("/");

console.log(parts[0]) // -> articles
console.log(parts[1]) // -> 123456

答案 2 :(得分:1)

    var url = "http://www.example.com/#articles/123456/";
    var lastIndex = lastIndex = url.endsWith("/") ? url.length-1: url.length;
    var hashIndexPlusOne = url.lastIndexOf('#') + 1; 
    var startIndex = url[hashIndexPlusOne]==="/" ?  hashIndexPlusOne + 1 : hashIndexPlusOne;
    values = url.substring(startIndex , lastIndex).split("/");

    //Result: 
    //values[0] = articles, values[1]= 123456