[javascript]problème avec la fonction append

Résolu/Fermé
Obee78 Messages postés 3 Date d'inscription vendredi 3 avril 2015 Statut Membre Dernière intervention 3 avril 2015 - 3 avril 2015 à 12:52
 Utilisateur anonyme - 3 avril 2015 à 15:35
Bonjour,

Je suis en première année à la fac et j'ai un partiel en javascript qui consiste à créer un site complet. Mon site est une sorte d'analyseur de symptômes, qui s'inspire de l'application DocForYou. Une partie de mon code ne fonctionne pas et je n'arrive pas à comprendre pourquoi puisque mon code se répète et que je n'avait pas eu de problèmes avant. L'erreur doit être très simple mais je n'arrive pas à la trouver. J'ai besoin de votre aide! Je dois rendre ce projet dans une semaine! Voici le code javascript correspondant:

$('.tete').click(function(){
$('article.texte').append("<p>Avez-vous de la fièvre?</p>");
$('article.texte').append("<h2 class='oui1'>oui</h2>" + "<h2 class='non1'>non</h2>");
$('.oui1').click(function(){
$('article.texte').append("<p>Avez-vous le nez qui coule?</p>");
$('article.texte').append("<h2 class='oui2'>oui</h2>" + "<h2 class='non2'>non</h2>");
});
$('.non1').click(function(){
$('article.texte').append("<p>Avez-vous le nez qui coule?</p>");
$('article.texte').append("<h2 class='oui2'>oui</h2>" + "<h2 class='non2'>non</h2>");
});
$('.oui2').click(function(){
$('article.texte').append("<p>Votre douleur de la face est-elle unilatérale?</p>");
$('article.texte').append("<h2 class='oui3'>oui</h2>" + "<h2 class='non3'>non</h2>");
});
$('.non2').click(function(){
$('article.texte').append("<p>Votre douleur de la face est-elle unilatérale?</p>");
$('article.texte').append("<h2 class='oui3'>oui</h2>" + "<h2 class='non3'>non</h2>");
});
});

.tête correspond à une division correspondant à la tête d'une photo de corps humain. .texte est une division de mon body dans lequel le texte apparait, afin qu'il ne se retrouve pas n'importe où.
Merci d'avance pour votre aide !!

A voir également:

1 réponse

Bonjour

Une partie de mon code ne fonctionne pas
Laquelle ? Et qu'entends-tu par "ne fonctionne pas" ? Elle fait autre chose que ce que tu attends ?

À vue de nez, ton problème vient de ce que tu affectes des fonctions à des choses qui n'existent pas encore - donc tu n'affectes rien du tout. Je détaille. Accroche-toi, j'avoue que c'est un peu subtil si tu n'as pas l'habitude :

- Tu cliques sur un élément de classe 'tete'
- ton script crée des éléments de classe 'oui1' et 'non1'
- il assigne à ces éléments des fonctions 'onclick'
- aussitôt, il assigne des fonctions onclick aussi aux éléments de classes 'oui2' et 'non2' et c'est là le problème. C'est trop tôt : ces éléments n'existent pas, ils n'existeront que quand tu auras cliqué sur 'oui1' ou 'non1'.

Voilà pourquoi ça ne marche pas.
Le remède : n'appeler le
$('.oui2').click(function(){ ...
qu'après la création de 'oui2' et 'non2', c'est à dire à l'intérieur (et non pas après) les fonctions onclick associées à 'oui1' et 'non1'

[edit] : une autre solution, sans doute plus facile à mettre en oeuvre, serait de créer tous tes textes normalement dans ta page HTML mais avec un display:none. Tu pourrais dès le départ affecter toutes les fonctions que tu veux, et te contenter de jouer sur les display: pour les faire apparaître quand tu as besoin.
1
Obee78 Messages postés 3 Date d'inscription vendredi 3 avril 2015 Statut Membre Dernière intervention 3 avril 2015
3 avril 2015 à 15:22
Quand je dis qu'elle ne fonctionne pas, c'est bien qu'elle ne s'affiche pas du tout, il ne se passe rien.
En tout cas merci pour ta réponse rapide! Je vais essayer tout ça de suite!
0
Obee78 Messages postés 3 Date d'inscription vendredi 3 avril 2015 Statut Membre Dernière intervention 3 avril 2015
3 avril 2015 à 15:32
Ca marche parfaitement merci beaucoup!!
0
Utilisateur anonyme
3 avril 2015 à 15:35
De rien :-)
0