11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

je vous écrit car mon code ne fonctionne pas, et je ne comprends pas du tout pourquoi.
Mes conditions
else if
et
else
ne donnent rien... Smiley decu

var point;
var nom;

$(document).ready(function() {
	if (point = "#pt1"){
		nom = "#nom1";
		}
	else if (point = "#pt2"){
		nom = "#nom2";
		}
	else {
		nom = "#nom3";
		}
	
	$(point).mouseover(function() {
		$(nom).show();
	});
	$(point).mouseout(function() {
		$(nom).hide();
	});
		
});


Un grand merci pour votre aide Smiley biggrin
Modifié par MattSaf (14 May 2014 - 09:12)
Bonjour,

Pour commencer une structure conditionnelle qui teste l'égalité s'effectue avec l'opérateur == et non =
Bonjour,

merci, mais ça ne marche pas plus Smiley confus

J'avais fait ça, mais rien ne fonctionnait.
En ne mettant qu'un seul "=" il y a au moins le premier "if" qui fonctionne.

Piètre satisfaction... Smiley decu
Si donc je mets 2 "=" et que je simplifie un peu ce code à 2 variables :

var point;
var nom;

$(document).ready(function() {
	if (point == "#pt1"){
		nom == "OK1";
		}
	else if (point = "#pt2"){
		nom == "OK2";
		}
	else {
		nom == "OK3";
		}
	
	$(point).click(function() {
		alert(nom);
	});
		
});


Rien ne se passe.
Lorsque je mets les noms des identités dans la fonction, là ça marche, donc pas de soucis du côté du Html ou du CSS... Smiley decu

Merci pour votre aide
salut,
je crois que tu as mal compris ce qui t'a été dit.
Lorsqu'on vérifie une égalité, on utilise "==" (ou [b]"===" pour une égalité absolue)[/i] mais pour donner une valeur, c'est un simple "=".

var point;
var nom;

$(document).ready(function() {
	if (point == "#pt1"){
		nom = "#nom1";
		}
	else if (point == "#pt2"){
		nom = "#nom2";
		}
	else {
		nom = "#nom3";
		}
	
	$(point).mouseover(function() {
		$(nom).show();
	});
	$(point).mouseout(function() {
		$(nom).hide();
	});
		
});
Salut,

merci pour ces renseignements.
J'aurais appris quelque chose.

Mais par contre ça ne change rien, la fonction en fonctionne toujours pas... Smiley decu
Bonjour,
Mets une alerte après ton test
alert(point);

afin de voir si "point" a une valeur
car si je me trompe pas dans le dernier cas "else", "point" n'a pas de valeur
donc $(point).++++ ne peut fonctionner

Si dans le premier if tu as mis point = "#pt1" alors point est défini a #pt1 c'est pour cela que ça marche
Salut,

Effectivement, en partant d'un code pareil, ça ne marchera jamais.

Pour que ça marche, il faut que la variable point récupère une ancre dans sa déclaration. Mais, sans plus de précisions sur les intentions de ce code, difficile de t'aider davantage, MattSaf.

Un conseil : évite de déclarer tes variables en dehors de la fonction appelée par la méthode ready () de jQuery.
Modifié par Victor BRITO (15 May 2014 - 08:35)
Merci Victor, merci aliasdmc.

le but de ce travail (juste un exercice pour aborder les variables) est d'avoir 3 boutons qui font apparaître 3 noms différents suivant le bouton survolé.

Je tiens (pour l'exercice) à ce que les 3 noms soient dans des div différentes.

J'avoue que j'approche depuis un moment avec peine les codes jquery.
Je bute sur des exercices assez simples (je pense) comme celui d'aujourd'hui.
Ça me laisse perplexe... Smiley confus
Je pense que ton soucis est moins du JQuery que de l'algorythmique (hou, le grand mot), de la logique ou du javascript ^^'

Je reprends ton objectif en "logique" :
-partie html-
-> j'ai trois boutons identifiable par id : (#pt1; #pt2; #pt3)
-> j'ai trois textes identifiable par un id : (#nom1; #nom2; #nom3)
-> quand je passe sur un des bouton (.mouseover())
--> un texte dans une div doit s'afficher (.show()
-> quand je quitte le bouton (.mouseleave())
--> le texte doit disparaître (.hide())

Le javascript doit savoir sur quel bouton tu passes. Pour ça je vois deux possibilités logiques :
technique n°1 : une fonction par id. C'est simple, c'est propre, mais ça va pas t'avancer pour l'exercice que tu souhaites.

technique n°2 : une fonction pour les trois (en utilisant une virgule et un espace entre chaque id). Puis tu ajoutes au "quand je passe" et au "quand je quitte" une petite trucherie de variables, permettant de savoir laquelle des divs tu vas devoir faire apparaître :
-> tu récupères l'id de la div sur laquelle tu viens de passer/de quitter (grâce à this et à attr)
-> tu la parses pour garder le chiffre (split)
-> grâce une concatenation de string, tu formes le nom de la div qui doit se voir

technique n°3 : tu pars du principe qu'il n'y a aucun lien entre l'id du bouton et l'id du texte (genre tes boutons se nomment #pt1, #pt2, #pt3 et tes divs #chat #chien #loutre). Là tu passes par un tableau, la trucherie devient :
-> tu as en dur un tableau de correspondance entre tes boutons et tes divs à afficher (array)
-> tu récupères l'id de la div sur laquelle tu viens de passer/de quitter (voir au-dessus)
-> tu récupères le nom de la div à show/hide dans la tableau

Il existe encore une autre technique, dans un autre système html à l'aide des notions d'enfants et de parents, mais c'est plus compliqué encore Smiley langue


Maintenant à toi de réinterpréter tout ça en JQuery et de venir nous revoir si ça passe pas Smiley murf
Modifié par Lothindil (16 May 2014 - 10:08)