Solved

location.search

Posted on 2003-12-10
13
1,590 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
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
Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

 
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

Is Your AD Toolbox Looking More Like a Toybox?

Managing Active Directory can get complicated.  Often, the native tools for managing AD are just not up to the task.  The largest Active Directory installations in the world have relied on one tool to manage their day-to-day administration tasks: Hyena. Start your trial today.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
jQuery delay animation 3 29
Jquery 10 20
DataTables + iCheck + pagination Issue 2 22
How to deal with the query string 7 18
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…
This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
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…

773 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