Solved

location.search

Posted on 2003-12-10
13
1,603 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 500 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

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!

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
href return to normal window 5 31
Date on a table 16 35
How Close unsubmited attempts 10 46
Compute age Html 2 27
Avoid defining the variables in the global scope; trying to define them in a local function scope. Because:   • Look-up is performed every time a variable is accessed.   • Variables are resolved backwards from most specific to least specific scope…
This article will give core knowledge of JavaScript and will head in to your first JavaScript program. I am Durvesh Naik and I am here to deal with this series of JavaScript. I will teach you JavaScript in part wise , as its quite boring to read big…
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…

733 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