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 :

[DOM] Ajout dynamique de tableau


Sujet :

JavaScript

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Points : 47
    Points
    47
    Par défaut [DOM] Ajout dynamique de tableau
    Bonjour à tous,

    Voilà j'aimerais savoir comment faire pour ajouter dynamiquement de morceau de tableau.

    Je m'explique; j'ai le tableau suivant

    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
     
    <table id="galerie_cat" width="100%">
       <tr id="mon_premier_element">
    	<td>
    	   <table id="galerie_cat_no2" width="100%">
    		<tr >
    		   <td valign="top" width="150px"><img src="modules/galerie_membre/image_galerie/test.jpg" width="114px" height="150px" >
                        </td>
    		    <td valign="top" style="padding-left:10px;">legende</td>
    		    <td valign="top" width="5%"><img src="images/espace_membre/edit2.png"></td>
    		     <td valign="top" width="5%"><img src="images/espace_membre/del.png"></td>
                      </tr>
    	    </table>
    	</td>
       </tr>
    </table>
    Voici donc le code et je voudrais ajouter de manière dynamique un élément <tr> au tableau id="galerie_cat" et dans ce tr serait logé comme dans le code ci-dessous les infos. (table id="galerie_cat_no2" etc...)

    //edit : la suppression m'interesse aussi !!! de l'élément mon_premier_element

    Merci d'avance de votre aide...

    P.S: si mes explications ne sont pas claire n'hésitez pas à me demander de nouveau

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Merci je vais tester donc!

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Bonsoir,

    J'ai donc tester ! Pour la suppression pas de problème mon soucis se situe au niveau de l'ajout enfin visuellement cela s'ajoute mais ma fonction supprimer ne s'exécute pas comme il faut:

    Le javascript :

    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 supprimer_imagemembre(ligne2,tableau,compte,id)
    			{
    			alert(id);
    			if(confirm('".GLM_SUP."'))
    				{
    				var ligne = document.getElementById(ligne2);
    				document.getElementById(tableau).deleteRow(ligne.rowIndex);
    				/* fonction ajax de suppression */
    				var xmlhttp = getHTTPObject();
        			xmlhttp.open(\"GET\", 'modules/galerie_membre/ajax/supprime.php?id='+id);
    				vider_cache(xmlhttp);
        			xmlhttp.onreadystatechange = function() 
    					{
    		  			if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    						if(xmlhttp.responseText.charAt(0)!=1)
    							alert('".GLM_ERRSUP."');
    						}
           				}
    				xmlhttp.send(null);
    				/*
    				//Recomptage des lignes...
      				var tableau = document.getElementById(tableau);
      				var trs = tableau.rows;
      				var n = trs.length;
      				var i;
     				for (i=1; i<n; i++) //on commence à 1 et non à 0 ;)
      					{
        				trs[i].cells[0].innerHTML = trs[i].rowIndex;
      					}
    				*/
    				document.getElementById(compte).innerHTML=parseInt(document.getElementById(compte).innerHTML)-1;
    				}
    			}
    		function test(image,id)
    			{
    			alert('id='+id+'  image='+image);
    			var tableau = document.getElementById('galerie_cat');
      			var ligne = tableau.insertRow(-1); 
     
      			Cell    		= ligne.insertCell(0);
    			Cell.id 		= 'galerie_membre_'+id;
      			Cell.innerHTML	= '<table id=\"galerie_cat_no2\" width=\"100%\"><tr><td valign=\"top\" width=\"150px\"><img src=\"modules/galerie_membre/image_galerie/mini_'+image+'\"></td><td valign=\"top\" style=\"padding-left:10px;\">&nbsp;</td><td valign=\"top\" width=\"5%\"><img src=\"images/espace_membre/del.png\" style=\"cursor:pointer;\" title=\"".GLM_SUPIN2."\" alt=\"".GLM_SUPIN2."\" onclick=\"supprimer_imagemembre(\'galerie_membre_'+id+'\',\'galerie_cat\',\'nb_imagegalerie\',id);\"></td></tr></table>';
    			}
    ?>
    test() est la fonction d'ajout.

    Se reporter au code de mon premier post pour voir le code html.

    Merci d'avance à vous!

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    innerHTML pour insérer un tableau dans une cellule (qui condiendra 2 images), ce n'est pas ce qu'il y a de mieux

    Utilise les fonctions du DOM : createElement. Et je pense que tu peux te passer de l'insertion d'un tableau dans une cellule pour présenter ta page et utiliser des feuilles de styles.

  6. #6
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Oui c'est clair !!!

    Tu as raison j'ai utilisé un style et punaise ben l'insertion et la suppression devienne un jeu d'enfant je fait juste un hidden=true et pour les création des innerHTML et hop c'est ok !

    Merci de ton aide elle m'a permius d'apprendre des choses sur les tableau et le DOM merci à toi

    Bonnne continuation !

  7. #7
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    content pour toi si ça marche

    Mais quand je te disais d'utiliser les méthodes du DOM, je fais allusion à quelque chose dans ce genre :
    Code javascript : 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
     
    function test(image,id)
    {
    alert('id='+id+'  image='+image);
    var tableau = document.getElementById('galerie_cat');
    var ligne = tableau.insertRow(-1); 
     
    var Cell = ligne.insertCell(0);
    Cell.id = 'galerie_membre_'+id;
     
     
    var imgCell = document.createElement("img");
    imgCell.src = "modules/galerie_membre/image_galerie/mini_"+image;
    imgCell.style.float="left";
     
    /* etc.......*/
     
    Cell.appendChild(imgCell);
    }

  8. #8
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    Je supporte pas innerHTML, oriente toi vers createElement, removeChild, et autre.... insertRow aussi comme le dit Auteur...
    deY!

  9. #9
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Oui c'est sur que c'est mieux je le reconnais mais utiliser cela est très lourd !!!!

    Je me suis orienter vers les div qui se créé mais aussi avec la méthode innerHTML comment créer ces div avec votre méthode ?

    Merci de votre écoute.

  10. #10
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var mycontener = document.getElementById('myelement'); //ou tout autre moyen de recup un NOEUD qui doit receptionner les nouveaux element
    var mydiv = document.createElment('div');
    mydiv.setAttribute('class', 'myclass');
    mycontener.appendChild('mydiv');
    Attention appendChild rajoute à la suite... si tu veux remplacer, tu as replaceChild, si tu veux supprimer et rajouter, tu dois faire removeChild puis appendChild
    deY!

  11. #11
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mydiv.setAttribute('class', 'myclass');
    Simple curiosité setAttribute est reconnu par tous les navigateurs ?


    Sinon (équivalent à la ligne de code ci-dessus):
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mydiv.className = "myclass";

  12. #12
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    Sur IE ça ne fonctionne pas c'est vrai... Mais IE c'est un peu de la daube en boite

    Je sors d'une longue periode de dev Javascript avec FF et SVGViewer qui eux le comprenne, même le DOM 2 ... bref... c'est pas le sujet...
    deY!

  13. #13
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Merci à tous pour vos réponse grâce à vous j'ai pu comprendre pas mal de mécanisme !!!

    J'ai donc terminé ce que je voulais faire et je suis trés content.

    Merci à tous!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] ajouter un element dynamiquement dans un tableau (<table>)
    Par Skanking dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 24/01/2009, 11h40
  2. [DOM] Ajouter dynamiquement des champs inputs
    Par bobic dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/05/2008, 13h10
  3. [DOM] Ajout dynamique d'une ligne dans un <table>
    Par Alzelus dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/05/2007, 17h05
  4. [DOM] Ajouter dynamiquement une zone de texte
    Par fadex dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 28/02/2007, 15h01
  5. [DOM] ajouter cellspacing dynamiquement
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/04/2006, 11h30

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