I am or have not really ever had to use location.search before.

What i would like is for someone or everyone to educate me a lil bit on it.

Say i have a link like so
<a href="blah.html?id=1">Go</a>

and (for example purposes) i have a menu on the destination page, and i would like to search the location, then use document.getElementById("menu"+ id) to set the style's of the active link.

assuming this is a menu, the links would look like so

<a href="blah1.html?id=1" id="menu1">Go</a>
<a href="blah2.html?id=2" id="menu2">Go</a>
<a href="blah2.html?id=3" id="menu3">Go</a>

How would i go about searching the location and getting the id from the query str?

Do you have to use something like window.location.search.split("?") or what


LVL 16
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

jaysolomonAuthor Commented:
Everyone must be sleeping

strURL = location.search

arrURL =strURL.split("?")

then arrURL[1] will give you the name value pairs. If you have multiple pairs, then you will have to do a further split on &

Another approach:

<script language="JavaScript">

function getValues(){
      var strSearch = location.search;
      strSearch = strSearch.substring(1);
      var arrNameValues = strSearch.split("&");
<body onLoad="javascript:getValues()">

Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

This doesn't use a location.search, but it should do the job.

<script language="JavaScript" type="text/javascript">
function splitURL(obj)
      var hr = document.getElementById(obj).href;
      var myId = hr.substring(hr.indexOf("id=")+3,hr.length)
      return myId

Call the function by using a link ID as a parameter.
It will return the value of id in the href.

Hope this is what you want.
jaysolomonAuthor Commented:
How would i go about stripping (no not my clothes) the "menu=" out?

say i have this in place of your document.writeln
document.getElementById("menu"+ id)

where id would be the actual value of menu=


The addy bar looks like so


i would then nee dto get the 2, and it would then set document.getElementById("menu"+ id) to document.getElementById("menu2")
Okay, so the first split on the question mark gives you the text:


so, do the same thing again:

strURL = location.search
arrURL =strURL.split("?")
arrNameValues = arrURL[1].split("=")

now arrNameValues[1] has what you need.

Fritz the Blank

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
  location.search as you know gives the search attached to the URL. You can extract the info for the difeerent fields using regex. Since ? indcates the end of the URL I have just used location.href to extract stuff.

however for something like blah2.html?id=3&name=Bill


and then extract using somthing like this

here's something that gets the field and the value in it using location.search...

str1 = location.search
str2 = str1.split("?")[1]
qryfield = str2.split("=")[0]
qryval = str2.split("=")[1]

but it is much better to extract using location.href like this:

str1 = location.href
str2 = str1.split("?")[1]
qryfield = str2.split("=")[0]
qryval = str2.split("=")[1]
jaysolomonAuthor Commented:
Thanks to everyone

Gwynn and gam3r

Please see

Hey Jay,

Thanks a bunch!

Fritz the Blank
In case you just need to resolve two set of key-value fields and you know the order of the  fields, this method is simple:

var maske = /^.*?=(.*?)&.*?=(.*)$/;
var query = location.search;
var resultat = query.match(maske);


resultat[0] contains the whole querystring
resultat[1] contains the value of the first key
resultat[2] contains the value of the second key

The expression 'maske' can be extended further for more key-vale fields by inserting '(.*?)&.*?=' accordingly
For three key-value fields the 'maske' will look like this:

var maske = /^.*?=(.*?)&.*?=(.*?)&.*?=(.*)$/;

How about a function to get a querystring value based on knowing the name of the variable?

url = http://www.blahblah.html?x=#FFFFFF
var MyValue = fn_querystring('x');

Has anyone seen a function like this? I have one (see below) that is for some reason working with some values but not others. If someone can improve the function below, I would be very very happy:

function PageQuery(q) {
if(q.length > 1) this.q = q.substring(1, q.length);
else this.q = null;
this.keyValuePairs = new Array();
if(q) {
for(var i=0; i < this.q.split("&").length; i++) {
this.keyValuePairs[i] = this.q.split("&")[i];
this.getKeyValuePairs = function() { return this.keyValuePairs; }
this.getValue = function(s) {
for(var j=0; j < this.keyValuePairs.length; j++) {
if(this.keyValuePairs[j].split("=")[0] == s)
return this.keyValuePairs[j].split("=")[1];
return false;
this.getParameters = function() {
var a = new Array(this.getLength());
for(var j=0; j < this.keyValuePairs.length; j++) {
a[j] = this.keyValuePairs[j].split("=")[0];
return a;
this.getLength = function() { return this.keyValuePairs.length; }

function queryString(key){
var page = new PageQuery(window.location.search);
return unescape(page.getValue(key));
here's something i'd like to share to jAy: lol =)

function printSrc(paramName){
url = "http://domain.com/go.htm?x=Big%20Boy&y=Medium%20Boy&z=Small%20Boy";url = url + "&";
url = unescape(url.split(paramName+"=")[1]);if(url.indexOf("&")!=-1){url=url.split("&")[0];}document.write(url);}
<p>hello... <br /><script>printSrc("x");</script>!</p>
<p>hello... <br /><script>printSrc("y");</script>!</p>
<p>hello... <br /><script>printSrc("z");</script>!</p>

take care,
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.