11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Je suis nulle en Javascript (je fais par comparaison avec le perl et le php dont j'ai quelques bases...) c'est surement pour ça que je bloque ici...

J'essaie de faire un simple script pour intervertir un texte en cliquant dessus

J'ai donc mon script d'un côté :
function flip_txt(balise,txt1,txt2) {
		if(document.getElementById(balise).innerHTML = txt1)
			{
			document.getElementById(balise).innerHTML = txt2;
			}
		else
			{
			document.getElementById(balise).innerHTML = txt1;
			}		
}


et mon appel de l'autre :
<a href="#" title="Afficher/cacher la recherche..." onclick="javascript:afficher_cacher('recherche'); flip_txt('apl_rech','?','X')"><div id="apl_rech">?</div></a>


Or, je dois me planter quelque part, car ça ne fonctionne qu'une fois, je reste ensuite bloquée sur le X...

Merci d'avance
Modifié par djinnie (15 Nov 2011 - 14:35)
Hello.

En survolant juste ton script, je peux déjà te dire qu'il y a un souci sur ton if.
if(document.getElementById(balise).innerHTML [#red]===[/#] txt1)
Pfff... Merci, ça marche ! (mais ça m'énerve de ne pas l'avoir trouvé toute seule !)


PS Je me demande comment ça pouvait fonctionner, même à moitié...
En gros, le if teste si la valeur de l'expression entre parenthèses est un booléen valant true.

Dans ton cas, tu affecte txt1 au innerHTML de ta balise, puis le if vérifie si la valeur de de innerHTML est true, ce qui est vrai car la chaine n'est pas vide.

Du coup, tu passe systématiquement dans le if, jamais le else.

Pour les différentes valeurs évaluées à true ou false, lire ce post en anglais : Truthy & Falsey
Hum... je ne comprends que très vaguement (je ne vois pas ce que le script pouvait faire du "= txt1")... ça dépasse sans doute mes connaissances...

Encore merci et bonne journée