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 :

Ajout de ligne à la volée dans un tableau


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 61
    Par défaut Ajout de ligne à la volée dans un tableau
    Bonjour,

    Je travaille actuellement sur un système de gestion pour des listes de livres - scolaires - en php.

    Lors de la modification d'une liste, je génère un formulaire (nommé "liste_livre") sous forme de tableau, comportant autant de lignes que de livres dans la liste, et autant de colonnes que de champs dont j'ai besoin pour chacun des livres.

    Mon problème est le suivant : le nombre de livres dans une liste peut varier.
    Si c'est en diminuant, pas de problème, l'utilisateur peut déjà indiquer quel(s) livre(s) il souhaiterait voir supprimé(s) de la liste. En revanche, pour ajouter des livres à la liste, j'ai besoin de pouvoir ajouter des lignes à mon tableau.

    J'ai donc penser utiliser du javascript pour insérer "à la volée" de nouvelles lignes vides dans mon tableau grace à la propriété "innerHTML", appliquée sur une balise <tr id"new_livre"></tr> originellement vide. Le contenu de cette ligne du tableau est modifié si besoin est par un appel à la fonction add_livres() (voir ci dessous) à travers un second formulaire (nommé "add_livres"), comportant un champ <input type="text" name="nb_livres" / > dans lequel doit être saisie le nombre de ligne à ajouter (par défaut 1).

    Au point où j'en suis, sous IE ca ne marche pas du tout, et sous Firefox, ca ne fonctionne qu'à moitié : les lignes insérées sont toutes décalées par rapport au tableau d'origine, sauf une.

    Est-ce que quelqu'un peut m'aider à trouver où se situe mon erreur ? Je pense qu'elle vient de la fonction, puisque le reste semble fonctionner convenablement.

    J'ajoute que ce système étant destiné à un usage - très - privé, la portabilité sur plusieurs navigateurs n'est pas du tout mon soucis premier. Faire en sorte que ca marche convenablement sur l'un d'entre eux au moins sera déjà très bien

    Voici le code de ma fonction 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
    function add_livres()
    {
    	var nb_livres=document.liste_livre.nb_livres.value;
    	var new_livres=document.add_livre.nb_livres.value;
    	var new_ligne=document.getElementById('new_livres').innerHTML;
     
    	for(i=1; i <= new_livres; i++)
    		{
    		nb_livres++;
    		new_ligne+='<td><input type="text" name="code_barre_'+nb_livres+'" / ></td><td><input type="text" name="isbn_'+nb_livres+'" / ></td><td><input type="text" name="matiere_'+nb_livres+'" / ></td><td><input type="text" name="titre_'+nb_livres+'" / ></td><td><input type="text" name="editeur_'+nb_livres+'" / ></td><td><input type="text" name="prix_'+nb_livres+'" / ></td><td align="center"><input type="checkbox" name="neuf_'+nb_livres+'" value="1" / ></td><td><input type="checkbox" name="ok_'+nb_livres+'" value="1" checked="checked" / ></td>';
    		if(i!=new_livres)
    			{
    			new_ligne+='</tr><tr>';
    			}
    		}
     
    	document.getElementById('new_livres').innerHTML=new_ligne;
    	document.liste_livre.nb_livres.value=nb_livres;
    	document.add_livre.nb_livres.value=1;
    }
    [ Note ]

    Pour faciliter le traitement à l'enregistrement de la liste de livre, le formulaire "liste_livre" comporte un champ masqué "nb_livres", indiquant le total de livre dans la liste.
    Autre point, les champs du formulaire "liste_livre" sont nommés de la facon suivante : "nom_du_champ_n°dulivre".

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 61
    Par défaut
    Je vois que le nombre de "vues" augmente, mais pas le nombre de réponses - qui semble ne pas vouloir décoller de 0 ... -.

    Si je me suis mal expliqué sur quelques chose, où que vous souhaitez avoir plus de renseignements, n'hésitez pas à demander, je tenterais de corriger le tir.

  3. #3
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 61
    Par défaut
    Citation Envoyé par Matthieu2000
    fais des recherches...
    Effectivement, merci ...
    En même temps insertRow c'est pas vraiment instinctif comme recherche ^^

    Bref, j'ai suivi le lien et ses petits frères sur la page pointée, pour finir par comprendre de quoi il s'agissait - et par m'appercevoir qu'une fois de plus, on peut faire (presque) simple là où je cherche à faire - très -compliqué, faute de connaissances... -. Du coup, j'ai repris ma fonction de fond en comble, elle fonctionne, sur IE comme sur Firefox, bref, c'est que du Bonheur©.

    Un seul petit point noir : les deux derniers champs de chaque ligne sont de type Checkbox, et je souhaiterais faire en sorte qu'ils soient cochés par défaut au moment de l'ajout de la ligne. Or "setAttribute('checked', 'checked')" fonctionne sous Firefox, mais pas sous IE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with(Champ=document.createElement('input'))
    	{
    	type='Checkbox';
    	setAttribute('checked','checked');
    	value='1';
    	name=liste_nom[j]+nb_livres;
    	}
    current_cell.appendChild(Champ);
    Comment faire en sorte que cela fonctionne aussi sous IE ?

Discussions similaires

  1. ajouter des lignes et colonnes dans un tableau
    Par sky88 dans le forum Débuter
    Réponses: 1
    Dernier message: 03/12/2008, 18h04
  2. Réponses: 2
    Dernier message: 07/08/2006, 16h43
  3. [VBA-E] ajout de ligne automatique en fin de tableau
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/06/2006, 21h13
  4. [C# 2.0] DataGridView ajout de ligne à la volée
    Par blasme dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/04/2006, 11h05
  5. [Fichier] Ajout des lignes de doc dans arraylist
    Par 3adoula dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 29/04/2004, 22h41

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