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 :

Afficher/masquer ligne d'un tableau


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 19
    Points : 21
    Points
    21
    Par défaut Afficher/masquer ligne d'un tableau
    Bonjour,

    Dans un tableau, je voudrais masquer les lignes avec l'id="certifie" lorsque l'on clique sur un bouton et réafficher ces lignes lorsque l'on clique sur un autre bouton.

    J'utilise pour ceci 2 fonctions js, qui modifie le style.display de la ligne avec cet id :
    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
    function masqueRefCertifiee(conteneur){
    	var tBody = $s(conteneur);
    	if (tBody.hasChildNodes()){
    		var ligne = tBody.childNodes;
    		for (var i=0;i<ligne.length;i++){
    			if (ligne[i].hasChildNodes()){
    				if (ligne[i].id == 'certifie')
    					ligne[i].style.display  = "none";
    			}
    		}
    	}
    }
    function afficheRefCertifiee(conteneur){
    	var tBody = $s(conteneur);
    	if (tBody.hasChildNodes()){
    		var ligne = tBody.childNodes;
    		for (var i=0;i<ligne.length;i++){
    			if (ligne[i].hasChildNodes()){
    				if (ligne[i].id == 'certifie')
    					ligne[i].style.display  = "block";
    			}
    		}
    	}
    }
    La 1ère fonction masque bien les lignes "certifie". la 2ème fonction réaffiche bien ces lignes, mais avec Firefox la mise en forme du tableau est perdue.
    Toutes les cellules des lignes "certifie" se retrouve dans la 1ère colonne du tableau.
    Sous IE cela fonctionne parfaitement !

    Pourquoi Firefox perd l'aligment des colonnes ?
    Comment puis-je résoudre ce problème ?

  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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne[i].style.display  = "block";
    Tout simplement parce que le display par défaut d'une ligne de tableau n'est pas "block" mais "table-row".
    Ceci dit, le meilleur moyen pour lui redonner son display par défaut (parce que bizarrement, tous ceux acceptés en CSS ne le sont pas forcément en JavaScript) est d'affecter une chaine vide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne[i].style.display  = "";
    Ceci dit, ton code me semble inutilement complexe et se base manifestement sur une structure HTML erronée puisqu'un id doit être unique dans la page...

  3. #3
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Maintenant il y à quand même beaucoup plus simple pour faire cela :

    Avec jQuery.
    Tu peux même ajouter un petit effet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#certifie").hide("slow");
    Pour le ré-affichage :


  4. #4
    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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut


    jQuery ne permettra pas de régler le problème des id identiques sur la page

    Surtout, cela reste une fonctionnalité relativement simple et triviale à réaliser sans avoir besoin d'ajouter jQuery à la page.

  5. #5
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bovino Voir le message


    jQuery ne permettra pas de régler le problème des id identiques sur la page

    Surtout, cela reste une fonctionnalité relativement simple et triviale à réaliser sans avoir besoin d'ajouter jQuery à la page.
    Je ne suis pas du tout d'accord, les id identique sur des éléments HTML ne posent pas de problème et je trouve nettement plus élégant de faire cela avec jQuery, qui est conçu pour ça.

    A la limite on utilisera la class de l’élément pour resté dans la "norme" mais c'est du pareil au même...

  6. #6
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par Golgotha Voir le message
    Je ne suis pas du tout d'accord, les id identique sur des éléments HTML ne posent pas de problème
    Ah quand même... désolé mais c'est indéfendable. ^^

  7. #7
    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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Golgotha
    les id identique sur des éléments HTML ne posent pas de problème
    Ah...
    Code html : 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
    <!DOCTYPE HTML>
    <html>
    	<head>
    	<title>Utilisation d'id multiples</title>
    	<script src="http://code.jquery.com/jquery-1.7.js"></script>
    	<script>
                    $(function(){
                            $('#clic').click(function(){
                                    $('#idmultiple').slideToggle();
                            });
                    });
            </script>
    	<style>
            #idmultiple{
                    height: 50px;
                    border: 2px solid grey;
                    background-color: silver;
                    margin: 10px;
            }
            #clic{
                    cursor: pointer;
                    border: 1px dotted silver;
            }
            </style>
    	</head>
    	<body>
    		<div id="idmultiple">1</div>
    		<div id="idmultiple">2</div>
    		<div id="idmultiple">3</div>
    		<div id="idmultiple">4</div>
    		<div id="idmultiple">5</div>
    		<div id="clic">Cliquer pour afficher / masquer les div</div>
    </body>
    </html>

  8. #8
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Ah quand même... désolé mais c'est indéfendable. ^^
    pfiou, heureusement que c'est dans la norme W3C... un id qui ne serait pas un id ça serait un comble

    Si on va par la, à mon avis 1% (et encore..) des sites web respecte totalement la norme W3C, donc l'hypocrisie ce n'est pas ma tasse de thé ^^ mais si ça peux faire plaisir de remplacer "#" par ".", je le fait volontier...

    ya t'il une réel incidence sur une page HTML si elle utilise deux id identique ?

    @Bovino
    Tu sais très bien que je peux faire un exemple ou j'aurais 50 id identiques qui ne poserons aucun problème...

  9. #9
    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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Golgotha
    ya t'il une réel incidence sur une page HTML si elle utilise deux id identique ?
    En JavaScript oui puisque tu ne peux plus utiliser getElementById()

  10. #10
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bovino Voir le message
    En JavaScript oui puisque tu ne peux plus utiliser getElementById()
    C'est pas faux

    Faite pas comme moi, utilisez la norme

    /me retourne mettre les mêmes id partout

  11. #11
    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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Golgotha
    /me retourne mettre les mêmes id partout
    Punks not dead !

  12. #12
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ben ça, c'est pas banal

    une question simple: Pourquoi mets-tu des id dans ton HTML?

    une question ouverte: je pense que la notion de troll est dépassée; pourquoi pas destroill?

    (Bovino )

  13. #13
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Punks not dead !
    Il en faut bien

  14. #14
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Ok, cela fonctionne avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne[i].style.display  = "";
    Oui, effectivement c'est plus opportun d'utiliser la class pour réaliser cela.
    Je charge déjà JQuery pour autre chose, donc c'est plus pratique pour moi de l'utiliser.

    Par contre pour le petit effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(".certifie").hide("slow");
    Sur une centaine de lignes cela prend beaucoup de temps (20s.) même avec "fast" c'est trop long et l'effet n'est pas au rendez-vous

    Merci pour votre aide

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/03/2013, 10h51
  2. Réponses: 10
    Dernier message: 08/04/2008, 12h14
  3. Afficher/masquer ligne tableau PB IE
    Par vct68 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/03/2008, 00h20
  4. Afficher/Masquer cellule d'un tableau
    Par SIILILLE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/05/2007, 03h52
  5. pb masquer ligne d'un tableau sous IE (fonctionne sous firefox)
    Par nocoment dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/04/2007, 17h37

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