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 :

�v�nement onclick dynamique


Sujet :

JavaScript

  1. #1
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    521
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Par d�faut �v�nement onclick dynamique
    Bonjour, je cr�� gr�ce � Dom des noeuds(Examens) dynamiquement et �a marche mais lorsque j'attribue � ces noeuds un �v�nement onclick mon code ne marche plus. Voici le code de cr�ation
    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
    for(var i=0;i<nbExam;i++)
    	 {
     
    		// création des nouveaux noeuds
    		var nouveauLi = document.createElement('li');
    		var nouveauDiv = document.createElement('div');
    		var nouveauLabel = document.createTextNode("Examen "+(i+1));
     
    		 // lui donne un attribut class appelé cliquable défini dans le css  
    		 nouveauDiv.setAttribute("className", "cliquable");//pour IE
    		 nouveauDiv.setAttribute("class", "cliquable"); //pour ff
    		 /*Il n'est pas nécessaire d'ajouter une détection du navigateur ci dessus, le 
    		 code non compris par chacun des navigateurs ne générant pas d'erreur.*/
     
    		 //sur clic des div créés appel de la fonction de création des séries
    		 nouveauDiv.onclick = series('4');//ie
    		 nouveauDiv.setAttribute("onclick","javascript:series(4);");//ff
     
            // raccord des noeuds
    		nouveauDiv.appendChild(nouveauLabel);
    		nouveauLi.appendChild(nouveauDiv);
    		var insertAvantMoi=document.getElementById('series');
    		var parentUl=insertAvantMoi.parentNode;
    		parentUl.insertBefore(nouveauLi, insertAvantMoi);
     
     
     
     
     
    	 }
      }
    le bout de code incrimin� c'est celui qui est cens� d�clench� un autre �v�nement lors du clic sur les div pr�c�demment cr��s, le voici
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     //sur clic des div créés appel de la fonction de création des séries
    		 nouveauDiv.onclick = series('4');//ie
    		 nouveauDiv.setAttribute("onclick","javascript:series(4);");//ff
    En effet cette appel d�clenche une erreur qui ne me permet m�me plus de cr�er les examens. La fonctions s�ries quand � elle est charg� lors du clic sur les examens d'effacer les series qu'ils y'avaient avant et d'en recr�er de nouvelles. Voici sont code
    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
    40
    41
    42
    43
    44
    45
    46
    function series(nbSeries)
      {
    		var noeud = document.getElementById('menu');
     
    		// j'efface les ancien noeud fils dont className=="ulnoeud"
    		 for(var i=0;i<noeud.childNodes.length;i++)
    		 {
     
    		     if((noeud.childNodes[i]).getAttribute("className")=="ulnoeud")//ie
    			 {
    				noeud.removeChild(noeud.childNodes[i]);
    			 }
    			 else
    			 {
    			    if((noeud.childNodes[i]).getAttribute("class")=="ulnoeud")//ff
    				{
    					noeud.removeChild(noeud.childNodes[i]);
    				}
    			 }
    		 }
     
        // recréation des nouvelle séries
    		for(var i=0;i<nbSeries;i++)
    		{
     
    			// création des nouveaux noeuds
    			var nouveauLi = document.createElement('li');
    			 // lui donne un attribut class appelé cliquable défini dans le css  
    			 nouveauLi.setAttribute("className", "ulnoeud");//pour IE
    			 nouveauDiv.setAttribute("class", "ulnoeud"); //pour ff
    			 /*Il n'est pas nécessaire d'ajouter une détection du navigateur ci dessus, le 
    			 code non compris par chacun des navigateurs ne générant pas d'erreur.*/
     
    			var nouveauDiv = document.createElement('div');
    			var nouveauLabel = document.createTextNode("Series "+(i+1));
     
    			// raccord des noeuds
    			nouveauDiv.appendChild(nouveauLabel);
    			nouveauLi.appendChild(nouveauDiv);
    			var insertAvantMoi=document.getElementById('images');
    			var parentUl=insertAvantMoi.parentNode;
    			parentUl.insertBefore(nouveauLi, insertAvantMoi);
     
     
    		}
      }
    Comment donc cr�er dynamiquement mon onclick
    Merci

  2. #2
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Je comprends pas trop pourquoi tu te compliques la vie en essayant de dissocier IE et FF

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    nouveauDiv.className = "cliquable");
    nouveauDiv.onclick = function(){series(4);}
    devrait �tre largement suffisant.
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  3. #3
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    521
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Par d�faut
    merci mais j'avais d�j� r�solu le probl�me gr�ce � la m�me solution que la tienne
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    nouveauDiv.onclick = function(){series(4);}
    mais seulement j'ai un autre probl�me ma fonction series est bien ex�cut�e et me cr�e des series: series1 � 4 sauf que la premi�re partie du code qui est charg� d'effacer les series existante dans la fonction series(nbSeries) ne fonctionne pas, la voici
    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
    var noeud = document.getElementById('menu');
    		alert("nb noeud "+noeud.childNodes.length);
    		// j'efface les ancien noeud fils dont className=="ulnoeud"
    		 for(var i=0;i<noeud.childNodes.length;i++)
    		 {
     
    		     if((noeud.childNodes[i]).getAttribute("className")=="ulnoeud")//ie
    			 {
    				noeud.removeChild(noeud.childNodes[i]);
    			 }
    			 else
    			 {
    			    if((noeud.childNodes[i]).getAttribute("class")=="ulnoeud")//ff
    				{
    					noeud.removeChild(noeud.childNodes[i]);
    				}
    			 }
    		 }
    si je clic sur le div charg� d'appeler la fonction series il va me cr�er de nouvelles series � chaque fois sans effacer les pr�c�dente donc au lieu de me retrouver avec 4 series je me retrouve avec 4*nbclic series. Je rajoute des noeuds mais
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    alert("nb noeud "+noeud.childNodes.length);
    me donne constamment le m�me nombre de noeud �a me para�t bizarre.

  4. #4
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    521
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Par d�faut
    j'ai pu r�soudre mon probl�me en fait la partie du code charg�e de me cr�er des noeuds fils le faisait bien mais le probl�me c'est que je cherchait � les effacer � partir du mauvais noeud p�re.
    Merci

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Pb Cr�ation �v�nement OnClick
    Par BigMike dans le forum C++Builder
    R�ponses: 10
    Dernier message: 26/06/2006, 15h47
  2. �v�nement onclick intempestif d'1 TMenuItem
    Par OutOfRange dans le forum Delphi
    R�ponses: 6
    Dernier message: 22/06/2006, 20h46
  3. Changement dynamique de l'�v�nement OnClick
    Par cluis dans le forum Access
    R�ponses: 3
    Dernier message: 22/03/2006, 11h30
  4. Erreur avec l'�v�nement OnClick de ListView
    Par xenos dans le forum Composants VCL
    R�ponses: 2
    Dernier message: 21/03/2006, 14h54
  5. Modification de l'�v�nement OnClick
    Par MrJ�j� dans le forum C++Builder
    R�ponses: 9
    Dernier message: 22/08/2002, 12h52

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