Regex javascript

Résolu/Fermé
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 - 6 janv. 2009 à 00:55
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 - 6 janv. 2009 à 22:44
Bonjour, je vais aller droit au but, en fait, en javascript, j'essaye de récupérer des options passées dans un lien. Mon lien d'appel donne ça :
<a href="lien_vers_image.png" onclick="return zLight(this, 'effect=fade width=200 height=150');">Test</a>


Je cherche à récupérer les valeurs de effect, width et height. Je voudrais pouvoir récupérer ces valeurs même si les options sont misent dans le désordre. Si il faut séparer les options par des virgules ou autre chose, aucun problème.
En fait je suis en train de créer une petite lightbox facile a mettre en place, et sans utiliser de frameworks. Désolé je suis vraiment nul en regex (je n'ai jamais compris la logique...).

Merci beaucoup.

10 réponses

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
6 janv. 2009 à 01:00
Bonjour,

pourquoi ne pas les séparer avec un ordre donné ?

<a href="lien_vers_image.png" onclick="return zLight(this, 'fade', '200', '150');">Test</a>


par exemple
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
6 janv. 2009 à 01:04
J'y ai bien pensé, mais si par exemple l'utilisateur ne veux pas d"effet et veux forcer la taille de l'image, ça pose un problème. fade risque d'être pris pour une valeur de largeur.

Edit : pour être plus claire, je veux que le lightbox soit fonctionnel juste avec le this, le reste, c'est des option pour faire joli, et que ces option, on puisse les mettre dans n'importe quel ordre.
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
6 janv. 2009 à 01:06
a ce moment là tu laisse tout de même la valeur, mais avec des quotes vides, donc tu sais que si la valeur de fade=='', c'est qu'il ne veut pas de fade, par exemple.
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
6 janv. 2009 à 01:15
Pour l'instant mon script fonctionne comme tu l'as dit, en fait c'est surtout pour savoir comment faire ... Les quotes vides, c'est pas très joli et moins instinctif pour un utilisateur qui n'a pas envie de ce prendre la tête, et je risque d'avoir besoin de cette méthode pour plusieurs de mes scripts.

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
6 janv. 2009 à 01:20
moins instinctif pour l'utilisateur ?
C'est à lui de remplir la fonction ?

Si la documentation est correcte il n'y a pas vraiment de soucis, de nombreux scripts fonctionnent comme ça.
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
6 janv. 2009 à 01:33
Je sais bien mais je ne trouve pas ça très pratique. Je veux que le deuxième argument serve juste a mettre les option, ça rend le code plus évolutif. Si, par exemple, un jour, je veux que l'utilisateur puisse changer la couleur de fond du lightbox uniquement pour une image, il mette dans les option background=green ca m'évite de retoucher toute la fonction et faire passer des variables inutiles. Enfin je sais pas trop comment expliquer, mais je ne veux pas d'autre solutions que de faire passer les option dans une seule variable qui est ensuite scannée par des regex. En tout cas, merci d'avoir essayer de me convaincre ^^,
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
6 janv. 2009 à 10:31
je ne maîtrise pas le regex non plus :p et le javascript non plus malheureusement.

mais je vais te dire comment j'aurais fait ça en php, la logique doit être semblable.

Tu fais un explode de ta chaîne de paramètres avec comme séparateur l'espace (" "), tu obtiens donc un tableau avec autant de valeur que tu as de paramètres, ensuite tu fais un 2eme explode avec comme séparateur le signe égal.

Tu vois la logique ?
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
6 janv. 2009 à 17:20
Ouais je vois bien la logique, je vais essayer, je te tiens au courant si ça fonctionne (ou pas ^^,). Merci.
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
6 janv. 2009 à 20:32
Salut, c'est bon, j'ai trouvé une solution, je ne sais pas si c'est la meilleurs mais ça fonctionne.

        var part1 = new Array();
	part = option.split(',');
	for (i = 0; i< part.length; i++)
	{
		part1[i] = part[i].split('=');
		part1[i][0] = part1[i][0].replace(' ', '');
			
		if (part1[i][0] == 'effect')
		{
			var zEffect = part1[i][1];
		}
		if (part1[i][0] == 'height')
		{
			var zHeight = part1[i][1];
		}					
		if (part1[i][0] == 'width')
		{
			var zWidth = part1[i][1];
		}
	}
	alert(zEffect+' - '+zWidth+' - '+zHeight);

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
6 janv. 2009 à 22:44
voila, de cette façon tu pourras rajouter facilement des paramètres ;)