function getURLvar() { // Fonction qui retourne un tableau associatif avec toutes les variables // Utilisée par getUrl() var url=location.href; // données de la barre d'adresse var urlVars=url.split("?"); // tableau contenant d'un coté l'url proprement dite, de l'autre les variables, s'il yen a (auquel cas, urlVars.length>0 : voir plus bas) var v=new Array(); // v["name"]=new Array(); v["val"]=new Array(); if (urlVars.length>0) { var vars=urlVars[1].split("&"); // séparation de toutes les variables for (var i=0; i<vars.length; i++) { v["name"][i]=vars[i].split("=")[0]; v["val"][i]=vars[i].split("=")[1]; //alert(v["name"][i] + "=" + v["val"][i]); } } return(v); } function getUrl(alpha) { var v=getURLvar(); var cRet; for (var i=0; i<v["name"].length; i++) { if (v["name"][i]==alpha) { cRet=v["val"][i]; } } return cRet; }
Bravo pour tes réponses avisées sur le forum.Mais là,ça ne marche pas. Je n'ai pas compris, alors peux-tu faire un éxemple concret, merciJ'ai fait un fichier nommé var_url1.htm contenant :<html><head></head><body ><a href ="var_url.htm?a=1&b=2&c=3" >transfert de variables a=1, b=2 et c=3</a></body></html>et un autre fichier var_url.htm :<html><head><script type="text/javascript">function getURLvar() { // Fonction qui retourne un tableau associatif avec toutes les variables // Utilisée par getUrl() var url=location.href; // données de la barre d'adresse var urlVars=url.split("?"); // tableau contenant d'un coté l'url proprement dite, de l'autre les variables, s'il yen a (auquel cas, urlVars.length>0 : voir plus bas) var v=new Array(); // v["name"]=new Array(); v["val"]=new Array(); if (urlVars.length>0) { var vars=urlVars[1].split("&"); // séparation de toutes les variables for (var i=0; i<vars.length; i++) { v["name"][i]=vars[i].split("=")[0]; v["val"][i]=vars[i].split("=")[1]; //alert(v["name"][i] + "=" + v["val"][i]); } } return(v); }function getUrl(alpha) { var v=getURLvar(); var cRet; for (var i=0; i<v["name"].length; i++) { if (v["name"][i]==alpha) { cRet=v["val"][i]; } } return cRet; }</script></head><body ><a href="#" onclick="alert(getUrl("a"))">récup variables</a></body></html>
Oui, la façon que tu as de l'appeler plante la fonction, je ne sais pas trop pourquoi ... surement à cause du hrefMais si tu mets:<a href="javascript:alert(getUrl('a'))">récup variables</a>ou <a onclick="alert(getUrl('a'))" ...tu verras que ça marche.Attention également aux guillemets en double, malvenus ici.
Réponse rapide !. C'était l'erreur de débutant : guillemets en double.href="#" provoque le rechargement de la page et dans ce cas les paramètres sont perdus, mais le onclick est éxécuté en premier et après correction de ma bévue, ça fonctionne aussi comme cela.encore merci
J'ai une url email.php?a=1&b=2&c=3Je veux afficher si la variable a existe alorsje veux afficher<input type='text' name='noclient' value='1'> sinon<input type='text' name='noclient' > de meme pour b et cComment faire SVP
Ce code est tout sauf optimal ...Il découpe l'ensemble de la chaîne et y stocke dans un tableau (affectations mémoire)Il parcours le tableau pour y trouver le paramètre ... complexité O(n) ridicule !Si au moins le découpage était stocké (je ne connais pas trop les capacités du javascript)sous la forme d'une table de hachage ou autre structure à temps de parcours par clé en O(log(n)) ou en O(1).Pourquoi ne pas simplement :Chercher la position du caractère ? dans l'URLSi non trouvé -> retourner nullSi trouvé ... chercher depuis la position du ? et faire une rechercher de chaîne pour y trouver "alpha=" et en retirer une sous-chaîne depuis la position après le = et jusqu'au prochain & (ou jusqu'à la fin de la chaîne si aucun &...).D'ailleurs je vais le faire tout prochainement dans le cadre d'un projet ...Sans rancune.
function getParamURL (url,param){ // Exemple bidon _ // // index 0 1 2 3 4 5 6 7 8 9 10 11 12 // url[index] A B C ? x = 3 & y a = 2 7 // getParamURL (url,x) (url,ya) // posParams 3 3 // debParam 4 8 // debParam+= 6 11 // finParam 7 -1 // substring (6,7) // substr (11,2) // retourne "3" "27" var posParams = url.indexOf ('?', 0); if (posParams < 0) return null; var debParam = url.indexOf (param+'=', posParams+1); if (debParam < 0) return null; debParam += param.length()+1; var finParam = url.indexOf ('&', debParam); if (finParam < 0) return url.substr (debParam, url.length()-debParam); else return url.substring (debParam, finParam);}// à tester (pas encore fait)
Et si vous le voulez vraiment pourquoi pas les expressions régulières pour splitter ...
certes ...
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 624 722 membres 488 nouveaux aujourd'hui 15 513 membres club