user948438237 user948438237 - 1 month ago 8
Javascript Question

Split and parse window.location.hash

I'm facing issues with splitting and parsing window.location.hash correctly.

First of all, we get few parameters in hash, ex:

#loc=austria&mr=1&min=10&max=89


As you surely see it's been created for search. When user clicks on pagination link page is being reloaded with the hash. So far so good.

I created function initialise() that is calling every time when there's hash in the URL:

if (window.location.hash) {
var params = (window.location.hash.substr(1)).split("&");

for (i = 0; i < params.length; i++)
{
var a = params[i].split("=");
// Now every parameter from the hash is beind handled this way
if (a[0] == "loc")
{
locationList(a[1]);
}
}
}


Everythig is almost working... When I choose all search params hash is being... cut. For unknown reason for me. I tried to use
if( params.indexOf('loc') )
instead of
a[0] == "loc"
without any luck.

Could you lend me a hand?

Edit

Of course, I was using var a = ... in the loop, it was only copy-paste error.

Answer

You don't need a loop, if it's only the value of loc from the hash you're after. This should also work.

var lochash    = location.hash.substr(1),
    mylocation = lochash.substr(lochash.indexOf('loc='))
                  .split('&')[0]
                  .split('=')[1];
if (mylocation) {
   locationList(myLocation);
}

Concerning the trunctating of the hash after a page reload: imho that isn't related to your loop.