23. oktober 2007 - 21:03
Der er
10 kommentarer og 1 løsning
Tilgå parameter i querystring ?
?param1=hej¶m2=med¶m3=dig Hvordan får jeg fat i værdierne fra de forskellige parameter i javascript..? javascript er ikke min stærke side, men har forsøgt mig med window.location.search, men kan ikke rigtig få det til at fungere.. nogen der kan hjælpe ??
Annonceindlæg fra Novataris
23. oktober 2007 - 21:16
#1
Det kunne gøre nogenlunde således (nok kluntet i nogen javascript-koderes øjne :)): var params = window.location.search.substr(1).split("&"); function getParam(name) { for(var i=0; i<params.length; i++) { if(params[i].indexOf("=") != -1) if(params[i].substring(0,params[i].indexOf("=")-1).toLowerCase() == name.toLowerCase()) return params[i].substr(params[i].indexOf("=")); } return ""; } NB: Jeg har ikke lige testet grænseværdierne for strengopdelingerne, så det kan være der lige er et lighedstegn for meget med...
23. oktober 2007 - 21:19
#2
<ole> function OCGetVar(sKey) { var oRxp = new RegExp(".*" + sKey + "=(.*?)(&.*)?$"); return location.href.replace(oRxp, "$1"); } alert( OCGetVar("param1") ); /mvh </bole>
23. oktober 2007 - 21:29
#3
Sorry ... det var 'den gamle'! Prøv denne i stedet: function OCGetVar(sKey) { var oRxp = new RegExp(".*\?.*" + sKey + "=(.*?)(&.*)?$"); if(oRxp.test(location.href)) return location.href.replace(oRxp, "$1"); return undefined; }
23. oktober 2007 - 22:14
#4
Hej Ole. Rammer den nederste rigtigt hvis der er nøgler, der er delstrenge af andre nøgler. ( "...?ris=7&is=8&gris=9" OCGEtVar("is") )
23. oktober 2007 - 23:25
#5
Ja, denne her gør 0:) function OCGetVar(sKey) { var oRxp = new RegExp(".*[&?]+" + sKey + "=(.*?)(&.*)?$"); if(oRxp.test(location.href)) return location.href.replace(oRxp, "$1"); return undefined; } ... tak, Erik ;o)
23. oktober 2007 - 23:27
#6
- og nu, du eksplicit spørger om den nederste ... :D
23. oktober 2007 - 23:35
#7
Det kan gøres på flere måder, er jeg sikker på. Jeg fik bikset den her sammen: // test med: ....?ris=7&is=8&gris=9 function GetVar(sKey) { var oRxp = new RegExp("[?&]" + sKey + "=([^&]*)"); var m = oRxp.exec(location.href); if (m == null) { return undefined; } else { return m[1]; } } alert( "ris " + GetVar("ris") ); alert( "is " + GetVar("is") ); alert( "gris " + GetVar("gris") ); Men skal vi ikke også lige klare bøvlet omkring url-encoding for spørgeren?
23. oktober 2007 - 23:52
#8
Det er jo afhængigt af tegnsættet. Hvis man har tomme linjer i dokumentet, kan man f.eks. skrive dette objekt: URIComp = { encode: function(sStr) { if (!this.inited) return this._setFns('encode', sStr); }, decode: function(sStr) { if (!this.inited) return this._setFns('decode', sStr); }, _inited: false, _setFns: function(sMeth, sStr) { var gat = cS = null, a = document.getElementsByTagName("meta"); for (var i=0,j=a.length; i<j; i++) { gat = a[i].attributes.getNamedItem; if ((/Content-Type/i).test(gat("http-equiv").nodeValue)) { cS = gat("content").nodeValue.match(/charset=([a-z0-9-]*)/i); if (cS.length>1) break; cS = null; } } if ( cS&& (/utf/i).test(cS[1])) { this.encode = function(s){return encodeURIComponent(s)}; this.decode = function(s){return decodeURIComponent(s)}; } else { this.encode = function(s){return escape(s)}; this.decode = function(s){return unescape(s).replace(/\+/g," ")}; } this._inited = true; gat = a = cS = null; return this[sMeth](sStr); } }; - og så bruger man det sådan: var myVar = GetVar("ris"); alert( URIComp.decode(myVar) );
28. oktober 2007 - 21:35
#9
olebole smid et svar
29. oktober 2007 - 14:43
#10
Gerne :)
31. oktober 2007 - 14:16
#11
Tak for points :)
Vi tilbyder markedets bedste kurser inden for webudvikling