Solved

location.search

Posted on 2003-12-10
13
1,567 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
  • 4
  • 3
  • 2
  • +4
13 Comments
 
LVL 16

Author Comment

by:jaysolomon
Comment Utility
Everyone must be sleeping

;)
0
 
LVL 46

Expert Comment

by:fritz_the_blank
Comment Utility
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
Comment Utility
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
 
LVL 15

Expert Comment

by:Timbo87
Comment Utility
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
Comment Utility
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
Comment Utility
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
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 31

Expert Comment

by:GwynforWeb
Comment Utility
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
Comment Utility
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
Comment Utility
Thanks to everyone

Gwynn and gam3r

Please see
http:Q_20823097.html

0
 
LVL 46

Expert Comment

by:fritz_the_blank
Comment Utility
Hey Jay,

Thanks a bunch!

Fritz the Blank
0
 

Expert Comment

by:atagu
Comment Utility
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
Comment Utility
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
Comment Utility
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

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

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…
Boost your ability to deliver ambitious and competitive web apps by choosing the right JavaScript framework to best suit your project’s needs.
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…

772 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now