Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

location.search

Posted on 2003-12-10
13
Medium Priority
?
1,621 Views
Last Modified: 2006-11-17
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

TIA

jAy
0
Comment
Question by:jaysolomon
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
  • +4
13 Comments
 
LVL 16

Author Comment

by:jaysolomon
ID: 9915342
Everyone must be sleeping

;)
0
 
LVL 46

Expert Comment

by:fritz_the_blank
ID: 9915866
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 &

FtB
0
 
LVL 46

Expert Comment

by:fritz_the_blank
ID: 9915886
Another approach:

<html>
<head><title>Results</title>
<script language="JavaScript">

function getValues(){
      var strSearch = location.search;
      strSearch = strSearch.substring(1);
      var arrNameValues = strSearch.split("&");
      for(i=0;i<arrNameValues.length;i++){
            document.writeln(unescape(arrNameValues[i]));
      }
}
</script>
</head>
<body onLoad="javascript:getValues()">


</body>
</html>
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 15

Expert Comment

by:Timbo87
ID: 9915898
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
}
</script>

Call the function by using a link ID as a parameter.
splitURL('menu1')
It will return the value of id in the href.

Hope this is what you want.
0
 
LVL 16

Author Comment

by:jaysolomon
ID: 9916032
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=

Example

The addy bar looks like so

http://blah.com/blah.html?menu=2

i would then nee dto get the 2, and it would then set document.getElementById("menu"+ id) to document.getElementById("menu2")
0
 
LVL 46

Accepted Solution

by:
fritz_the_blank earned 2000 total points
ID: 9916060
Okay, so the first split on the question mark gives you the text:

menu=2

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
0
 
LVL 31

Expert Comment

by:GwynforWeb
ID: 9916139
Jay,
  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

str=window.location.search

and then extract using somthing like this

Name=str.replace(/.*name=([^&]*).*/,"$1")
alert(Name)
idNum=str.replace(/.*id=([^&]*).*/,"$1")
alert(idNum)
0
 
LVL 7

Expert Comment

by:gam3r_3xtr3m3
ID: 9920476
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]
alert(qryfield+"="+qryval)

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]
alert(qryfield+"="+qryval)
0
 
LVL 16

Author Comment

by:jaysolomon
ID: 9921130
Thanks to everyone

Gwynn and gam3r

Please see
http:Q_20823097.html

0
 
LVL 46

Expert Comment

by:fritz_the_blank
ID: 9921153
Hey Jay,

Thanks a bunch!

Fritz the Blank
0
 

Expert Comment

by:atagu
ID: 9982216
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);

Hereafter:

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 = /^.*?=(.*?)&.*?=(.*?)&.*?=(.*)$/;

 
0
 

Expert Comment

by:ScotterMonkey
ID: 10229395
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));
}
0
 
LVL 7

Expert Comment

by:gam3r_3xtr3m3
ID: 10251192
here's something i'd like to share to jAy: lol =)

<script>
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);}
</script>
<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,
gam3r
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Having worked on larger scale sites, we found out that you are bound to look at more scalable solutions to integrating widgets, code snippets or complete applications and mesh them into functional sites, in any given composition. To share some of…
This article discusses the difference between strict equality operator and equality operator in JavaScript. The Need: Because JavaScript performs an implicit type conversion when performing comparisons, we have to take this into account when wri…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

618 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question