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 :

Ajouter dynamiquement des lignes à un tableau HTML [Fait]


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 11
    Points
    11
    Par défaut Ajouter dynamiquement des lignes à un tableau HTML
    Bonjour,

    je souhaiterai ajouter dynamiquement des lignes (<tr></tr>) à un tableau html (avec alternance de couleur pour chaque nouvelle ligne), à chaque fois que je clique sur un bouton... en clair mettre en place un "Partial Update" comme décrit sur http://ditch.developpez.com/javascript/partialupdate/.

    Le souci c'est que j'ai une erreur "Objet attendu ligne 50, car. 3" si je teste le code fournit en exemple... et je n'arrive pas à comprendre d'où vient le problème...

    Je suis sous IE5... merci de m'éclairer...

  2. #2
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 11
    Points
    11
    Par défaut Elément de réponse...
    Concernant le script cité en référence, en fait le ChangeFrameLocation est une fonction perso, il faut remplacer par document.getElementById("FrameMiseAJour").src = "file.html";

    Ceci étant dit, j'ai une nouvelle erreur sur la 2e fonction (objet attendu également) :
    function UpdateEtape2() {
    if (obj = getObjectById('Contenu')) {
    obj.innerHTML = window.frames['FrameMiseAJour'].document.body.innerHTML;
    }

    Et je vois toujours pas comment je pourrais gérer dynamiquement mon tableau de la page appelante...

    Une idée ???

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Merci... je vais voir ça de suite !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 11
    Points
    11
    Par défaut Table dynamique ==> Alternance couleurs pours les lignes
    Citation Envoyé par jeannot1974
    Merci... je vais voir ça de suite !
    Ca correspond effectivement parfaitement avec ce que je veux faire.

    Maintenant, je souhaiterai appliquer un style différent (en alternance) à chaque nouvelle ligne.
    Via un champ caché, je suis en mesure de déterminer à la limite quel style appliquer, mais le souci, c'est que je ne vois pas comment en Javascript, je veux spécifier le style à appliquer au niveau de la ligne :

    var newCell = newRow.insertCell(0);
    newCell.innerHTML = document.all.TXTCodeProduit.value;
    newCell = newRow.insertCell(1);


    Ci dessus, je crée la ligne, avec autant de cellules que nécessaire, mais me reste plus qu'à spécifier le style, et je trouve de réponse à ma question...

    Auriez-vous une idée ???

  6. #6
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    newRow.className="leStyle";

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Efficace

    Merci...

    PS : Je ne clos pas encore le post... on ne sait jamais

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Suite de ma problématique tableau...

    Dans les cellules que j'écris, je souhaite mettre une image... Quelle syntaxe utilisée ???

    Le code ci-dessous ne fonctionne pas

    newCell.innerHTML = "<img name='SupLig' id='SupLig' src='..\images\p-sup.gif' style='cursor:hand' alt='Supprimer la ligne'>";

  9. #9
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    ce serait pas plu simple de mettre ton image ds un div avec un display:none ?

    ainsi tu n'aurais que le display à changer pour affiher ton image

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Arnard
    ce serait pas plu simple de mettre ton image ds un div avec un display:none ?

    ainsi tu n'aurais que le display à changer pour affiher ton image
    En fait l'idée c'est que dynamiquement j'ajoute des lignes dans un tableau (issue d'une combo), et en fin de chaque ligne, je veux mettre un bouton qui me permette de supprimer la dite ligne si besoin...

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par jeannot1974
    En fait l'idée c'est que dynamiquement j'ajoute des lignes dans un tableau (issue d'une combo), et en fin de chaque ligne, je veux mettre un bouton qui me permette de supprimer la dite ligne si besoin...
    En fait ça venait que j'avais mis "\" au lieu de "/" dans le chemin... on va y arriver...

    Bonne syntaxe : newCell.innerHTML = "<img src='../images/p-sup.gif' style='cursor:hand' alt='Supprimer la ligne'>";

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 11
    Points
    11
    Par défaut Tableau dynamique... suite
    Donc maintenant j'ai mon tableau dynamique, avec mon alternance de couleur, nickel, mon bouton de suppression...

    Je me pose la question de la conversion de l'alternance de couleurs de mes lignes, dès lors que j'en supprime une...
    En effet si j'ai une ligne noire, puis une ligne blanche, puis une ligne noire, que je supprime la ligne blanche, j'ai alors 2 lignes noires à la suite...
    Donc en fait, il me faudrait suite à la suppression, balayer tout mon tableau pour réinitialiser la couleur de ligne, et rafraichir par la même occasion, l'index identifiant le numéro de ligne (qui me sert à supprimer la ligne)...

    Bon je vais y réfléchir et vous tiendrai au courant... mais je sens l'appel du week-end

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 11
    Points
    11
    Par défaut Modification de ligne dans un tableau...
    Bonjour...

    Dans la continuité de mes posts précédents, je cherche désormais à balayer dynamiquement mon tableau (notamment après une suppression de ligne), pour "refaire" la mise en page...

    Je cherche donc un moyen de modificer le style de toute une ligne (<tr>...</tr>), avec une fonction du même genre que insertRow(), deleteRow()...

    PS : Désolé, mais j'suis débutant, et je me pose les questions, tout en cherchant de mon côté (et surtout en cherchant à gagner du temps en demandant à ceux qui savent...).

    Merci bien...

  14. #14
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 11
    Points
    11
    Par défaut Résultat des courses
    Pour info, voici ce qui a finalement était écrit (ça peut toujours servir à quelqu'un) :

    A noter, que le nombre de lignes du tableau, est stocké dans un champ caché, pour divers traitements (y compris hors mise en page), nommé "HIDNbLignes".

    Fonction de suppression de ligne avec remise en page :
    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
     
    function SupprimerLignes(num_ligne)
    {
    	var nbrLignes;
    	var cTabLign;
    	var iLign;
    	var iCodPdt;
    	document.getElementById('TBLlignes').deleteRow(num_ligne);
    	nbrLignes = document.getElementById('HIDNbLigne').value;
    	nbrLignes--;
    	document.getElementById('HIDNbLigne').value = nbrLignes;
    	//On refait la mise en page du tableau
    	for (var i = 1; i <= nbrLignes; i++) {
    		if (i%2==0) {
    			cTabLign = "cTabLigP";
    		}
    		else {
    			cTabLign = "cTabLigI";
    		}
    		//Récupération du contenu de la ligne
    		iLign = document.getElementById('TBLlignes').rows[i];
    		//Récupération du Code Produit de la ligne
    		iCodPdt = document.getElementById('TBLlignes').rows[i].cells[0].innerHTML;
    		//Affectation nouveau style à la ligne en cours de traitement
    		iLign.className = cTabLign;
            iLign.cells[2].innerHTML = "<img src='../images/p-sup.gif' style='cursor:hand' alt='Supprimer la ligne : "+iCodPdt+"' onclick='javascript:SupprimerLignes("+i+")'>";
        }
    }
    Fonction appelée lors du clic sur un bouton d'ajout de produit (dont on récupère les infos dans une combo) :
    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
     
    function AjouterLignes(co_pdt)
    {
    	var nbrLignes;
    	var cTabLign;
    	if (document.all.TXTCodeProduit.value=='') {
    		alert("Aucun Produit n'est sélectionné");
    	}
    	else {
    		nbrLignes = document.getElementById('HIDNbLigne').value;
    		if (document.getElementById('HIDNbLigne').value=='0') {
    			document.getElementById('DIVlignes').style.visibility='visible';
    			document.getElementById('DIVlignes').style.display='block';
    		}
    		nbrLignes++;
    		document.getElementById('HIDNbLigne').value = nbrLignes;
     
    		//Détermination de la couleur de ligne du tableau
    		if (nbrLignes%2==0) {
    			cTabLign = "cTabLigP";
    		}
    		else {
    			cTabLign = "cTabLigI";
    		}
     
    		//Ajout d'une ligne au tableau (en fin de tableau)
    		var newRow = document.getElementById('TBLlignes').insertRow(-1);
    		newRow.className=cTabLign; 
    		var newCell = newRow.insertCell(0);
    		newCell.innerHTML = document.all.TXTCodeProduit.value;
    		newCell.align="center";
    		newCell = newRow.insertCell(1);
    		newCell.innerHTML = document.all.CMBProduit.options[document.all.CMBProduit.selectedIndex].text;
    		newCell = newRow.insertCell(2);
    		newCell.align="center";
    		newCell.innerHTML = "<img src='../images/p-sup.gif' style='cursor:hand' alt='Supprimer la ligne : "+document.all.TXTCodeProduit.value+"' onclick='javascript:SupprimerLignes("+nbrLignes+")'>";
    	}
    }
    En espérant que cela sera utile à quelqu'un... et merci à tous pour vos coups de pouce...

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

Discussions similaires

  1. cacher des lignes d'un tableau html
    Par guigui69 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/10/2009, 22h09
  2. supprimer des lignes d'un tableau HTML
    Par spax dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 24/09/2008, 16h19
  3. [MySQL] Mise à jour dynamique des lignes d'un tableau
    Par woodyfrance dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/02/2008, 11h50
  4. Alterner la couleur des ligne dans un tableau html
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/01/2008, 14h57
  5. [Tableaux] Ajout dynamique de ligne dans un tableau
    Par gforce dans le forum Langage
    Réponses: 7
    Dernier message: 14/07/2006, 12h02

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