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 :

Gros soucis avec mon onclick. Je n'arrive pas à l'associer à mon élément


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut Gros soucis avec mon onclick. Je n'arrive pas à l'associer à mon élément
    Bonsoir,
    Alors là j'ai un gros soucis avec le js. Tout d'abord voici le code simplifier au maximun:
    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
    function ChargeListeAcheteur()
    {
    	var reponseXml 		= xmlHttpListeAcheteur.responseXML;
    	var rootXmlElement	= reponseXml.documentElement;
     
    	var divParent=document.getElementById('acheteur_bloc_resultat_liste');
    	divParent.innerHTML="";
     
    	var table = document.createElement('table');
     
    	for(var i=0; i<(rootXmlElement.childNodes[1].childNodes).length;i++)
    	{
    		var id = rootXmlElement.childNodes[1].childNodes[i].childNodes[0].firstChild.data;
    		var ligne = table.insertRow(-1);
    		cell_nom = ligne.insertCell();
    		cell_nom.innerHTML=rootXmlElement.childNodes[1].childNodes[i].childNodes[1].firstChild.data;
     
    		alert(id);
    		cell_nom.onclick=function(){ processChargeFiche(id); };				
    	}
    	divParent.appendChild(table);
    }
     
    function processChargeFicheAcheteur(elemt)
    {
    	alert(elemt);
    }
    C'est très simple, je construit une liste de membre en ajax, et je voudrais associer une fonction à l'évènement onclick pour chaques individu afin de visualiser sa fiche.
    Imaginons 3 membres, je voudrais

    membre 1 -> id=1 -> onclick=processChargeFiche('1');
    membre 2 -> id=2 -> onclick=processChargeFiche('2');
    membre 3 -> id=6 -> onclick=processChargeFiche('6');
    Mon premier alert est la pour vérifier si j'ai les bon id, j'obtiens:
    1
    2
    6
    -> ok

    par contre ils ont tous onclick=processChargeFiche('6');, il prend en compte le dernier id pour tous les membres, c'est à dire que quelque soit le membre sur lequel je clique, je vois systematiquement la fiche du dernier membre.
    J'obtiens donc à l'écran:
    6
    6
    6
    J'ai essayé:
    cell_nom.onclick="processChargeFiche(id)";
    cell_nom.onclick="processChargeFiche("+id+")";
    J'ai essayé avec une variable superglobale mais sans succés.

  2. #2
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cell_nom.onclick=function(_id){ 
                              return function(){
                                   processChargeFiche(_id);
                             } 
    }(id);
    Pour que chaque id soit locale à la fonction onclick a laquelle il doit s'appliquer

  3. #3
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    L'approche de DoubleU me semble tout a fait pertinente. Cependant elle
    crée autant de fonction qu'il y a d'éléments cliquables ce qui dans ton cas
    n'est pas forcement nécessaire.

    cell_nom.onclick= processChargeFiche;

    permet d'appeler une seule et unique fonction pour tous.

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function processChargeFiche() {
      var id = this.id; // permet de récupérer l'id
    }
    Autre remarque, tu "monopolise" le onclick de tous les éléments ce qui le
    rend inexploitable pour d'autre usages futures par d'autres scripts qui pourraient
    en avoir besoin. Plus d'info à ce propos ici

    Encore une autre manière de voir serait d'associer un seul onclick à un parent
    commun, et de détecter l'élément enfant réellement cliqué pour le traiter.

Discussions similaires

  1. Gros souci avec gestion des arguments
    Par toams69 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 09/01/2009, 16h59
  2. Soucis avec le OnClick="Submit();" sur un lien hypertexte
    Par ero-sennin dans le forum Langage
    Réponses: 14
    Dernier message: 11/08/2008, 14h54
  3. GROS soucis avec SSL - Apache - Ubuntu ! HELP
    Par satyre dans le forum Sécurité
    Réponses: 1
    Dernier message: 22/05/2007, 13h37
  4. [C#][Visual C# Express] Gros souci avec Excel
    Par poullos dans le forum EDI/Outils
    Réponses: 7
    Dernier message: 18/11/2005, 13h15
  5. Gros soucis avec pgaccess et postgresql
    Par Missvan dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 13/04/2004, 16h16

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