IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

onclick dans une boucle


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut onclick dans une boucle
    Salut à tous!

    merci à vous qui prenez le temps de lire ce message

    Petite présentation du code défaillant :

    1) Un bouton "message" est placé sur mon site.

    2) en cliquant sur ce bouton, une division dédiée aux messages persos s'ouvre (ainsi qu'une en-tête, pas important). En outre, la fonction "actualiser_messages" est appelée.

    3) cette fonction envoie une requête (ajax) pour récupérer les messages dans ma bdd. Les infos recueillies sont renvoyées sous le format :
    id-nom-prenom/message-message|id-nom-prenom/message-message-message ...
    (id, nom, prenom de l'envoyeur)

    4) les données reçues sont alors triées de façon à afficher toutes les conversations (1 par personne ).
    Le nom de l'envoyeur ainsi que le premier message y figure.

    5) En cliquant sur une conversation, les messages s'affichent à la place des conversations.


    Voici le code :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div id="messages_persos"> Messages </div>
    <div id="en-tete"> 
      <div id="fermeture"> X </div>  
    </div>
    <div id="conversations">
    </div>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     var div_message = document.getElementById('messages_persos');
     var div_conversations = document.getElementById('conversations');
     var entete = document.getElementById('en-tete');
     div_message.onclick = function() {
    	 entete.style.display = 'block';	
    	 div_conversations.style.display = 'block';	
             actualiser_messages();		 
     };
     document.getElementById('fermeture').onclick = function () { div_conversations.style.display = 'none'; entete.style.display = 'none'; };
    function actualiser_messages() {
      var xhr = new XMLHttpRequest();
      xhr.open('GET','nv_messages.php');
      xhr.onreadystatechange = function () { 
          if (xhr.readyState == 4 && xhr.status == 200){
    	    var reponse = xhr.responseText;
    		  if(reponse.length){
    			 var tab_reponses = reponse.split('|'),
    			     tab_reponses_long = reponse.length;
    		div_conversations.innerHTML='';   	 
    			for ( var i=0, div; i<tab_reponses_long; i++){
    			   div=div_conversations.appendChild(document.createElement('div'));
    			   var conversation = tab_reponses[i].split('/');
    			   var expediteur = conversation[0].split('-');
    			   var messages = conversation[1].split('-');
    			   div.innerHTML = '<span>'+expediteur[1]+' '+expediteur[2]+'</span> <br/>'+messages[0];
    			   var messages_len = messages.length;
    			   div.onclick = function (){
    				div_conversations.innerHTML='';  
    				for (var j=0, div2; j<messages_len; j++){
    					div2=div_conversations.appendChild(document.createElement('div'));
    					div2.innerHTML=messages[j];
    				}
    			}; 
    		}  
    	}
       }
    }; 
      xhr.send(null);	
     }

    Le problème ?

    Tout va très bien jusqu'à l'étape 4, le nom s'affiche, ainsi que le premier message. Mais à l'étape 5, en cliquant sur une conversation (n'importe laquelle), c'est forcement les messages de la dernière conversation de la boucle qui s'affichent.

    Quelqu’un aurait-il une idée du problème?
    Merci d'avance

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 983
    Points : 44 180
    Points
    44 180

Discussions similaires

  1. Garder le onClick dans une boucle for
    Par Romain9354 dans le forum Langage
    Réponses: 4
    Dernier message: 03/01/2015, 12h26
  2. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19
  3. swf dans une boucle asp
    Par Chucky69 dans le forum Flash
    Réponses: 11
    Dernier message: 10/02/2004, 17h07
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 08h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo