Avatar billede mik789 Nybegynder
01. august 2004 - 11:19 Der er 8 kommentarer og
2 løsninger

query strengens variabler i JavaScript

Hvis man har en URL som denne:

http://mitsite.dk/index.html?sLeft=0&sTop=1040

Hvordan opfatter JavaScript så query strengen? Jeg troede at man også i JavaScript ville kunne overføre variabler fra side til side med query strengen ligesom man gør i php, men når jeg prøver får jeg f.eks. at vide at "sLeft is not defined". Dette til trods for at jeg sagtens kan få JavaScript til at alerte hele URL'en inkl. query strengen. Hvad skal der til for at f.eks. sLeft og sTop i dette eksempel opfattes som variabler?

Eller er der andre og bedre måder at sende variabler i JavaScript?
Avatar billede Slettet bruger
01. august 2004 - 11:53 #1
Hvis du vil læse noget på querystring i javascript så skal du selv lave den nødvendige "stringe-leg" for at finde værdierne.

En måde er at få dem skrevet til skjulte-felter server-side...
Avatar billede mik789 Nybegynder
01. august 2004 - 12:09 #2
ok, så i eks. oven for skal jeg søre på variabelnavnet i strengen, og derefter tage værdien og omforme den til en talværdi.

Hvad skal der til for at "få dem skrevet til skjulte-felter server-side"?
Avatar billede terrak Nybegynder
01. august 2004 - 12:17 #3
<script type="text/javascript">

if (document.location.href.split("&").length > 1) {

var urlvars2 = document.location.href.split("&");

var urlvars = new Array();

urlvars2[0] = urlvars2[0].split("?")[1];

for (i = 0; urlvars2.length > i; i++) {
tempvarname = urlvars2[i].split("=")[0];
tempvarvalue = urlvars2[i].split("=")[1]
urlvars[tempvarname] = tempvarvalue;

}

function getVar(varname) {

if (urlvars[varname]) {
return urlvars[varname];
} else {
return varname+" eksisterer ikke";
}

}


}

</script>

Get variable:<br />
<input type="text" id="varname" /><br />
<input type="button" onClick="alert(getVar(document.getElementById('varname').value));" value="get var" />

--

Du kan jo prøve at studere den lidt og se om det giver lidt inspiration ;)
Avatar billede grunken Nybegynder
01. august 2004 - 12:22 #4
eller et andet hurtigt eksempel, men som de andre siger - så er det strengeleg :o)

<script type="text/javascript">
function getQuery(q){
str = top.location.toString();
arr=str.split("?")[1].split("&")
for(i=0;i<arr.length;i++){
  if(arr[i].split("=")[0]==q)return arr[i].split("=")[1];
}
}

sLeft = getQuery('sTop');

alert(sLeft)
</script>
Avatar billede mik789 Nybegynder
01. august 2004 - 15:33 #5
terrak&grunken> fint, jeg kan få begge jeres scrips til at fungere.
grunken> læg også du et svar, så deler I.
Avatar billede grunken Nybegynder
02. august 2004 - 01:49 #6
svar :o)
Avatar billede roenving Novice
02. august 2004 - 03:15 #7
location.search vil have værdien: '?sLeft=0&sTop=1040' ...

-- så selvfølgelig skal man dele på & og på =, men jeg forstår ikke lige at man skal starte fra Adam og Eva, når man nu kan starte med den rene search-værdi ?-)
Avatar billede mik789 Nybegynder
02. august 2004 - 09:37 #8
OK, så alt i alt:

function getQuery(q){
queries = window.location.search.slice(1).split("&");
  for(i=0;i<queries.length;i++){
  if(queries[i].split("=")[0]==q) return queries[i].split("=")[1];
  }
}
Avatar billede grunken Nybegynder
02. august 2004 - 15:34 #9
okay roenving :o)

har nu aldrig set den perfomancemæssige fordel i at bruge search :o)

Mik >>
Slice er normalt en funktion til arrays - så ville nok anbefale at bruge

queries = window.location.search.substring(1).split("&");
Avatar billede mik789 Nybegynder
02. august 2004 - 15:48 #10
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester