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 :

[Planning]Colorer toutes les occurrences d'un nom, en JS


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut [Planning]Colorer toutes les occurrences d'un nom, en JS
    Bonjour,

    J'ai un tableau généré dynamiquement en PHP qui représente le planning du mois en cours.

    Afin de faciliter la lisibilité, on m'a demandé de créer un petit input text où lorsque l'on rentre le nom d'une personne, toutes les occurrences présentes dans le tableau prennent une couleur particulière.

    Pour le moment, toutes les cellules de mon tableau ont une classe prédéfinie : Class = couleur_normale. Lorsque l'on rentre le nom d'une personne, la class devient class= couleur_select.

    Voici mon 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
    function colorer(){
    			var nom = document.getElementById('nom').value;
    			var tab = document.getElementsByClassName('couleur_normale');
    			for (i in tab)
    			{
    				if (tab[i].innerHTML == nom)
    				{
    					tab[i].className = "couleur_select";
    				}
    				else
    				{
    					tab[i].className = "couleur_normale";
    				}
    			}
    		}
    La fonction getElementsByClassName est implémentée plus bas et marche sans problème.

    Mon soucis : lorsque je clique une première fois sur mon bouton "colorer", tous les noms se colorent parfaitement bien. Et si je rentre le nom d'un nouveau médecin, il se colore à son tour, mais l'ancien reste aussi coloré (et avec firebug je constate que toutes les occurrences de l'autre médecin restent avec la classe "couleur_select".

    J'ai coloré en rouge la partie du code qui ne fonctionne pas. Quelqu'un pourrait m'expliquer pourquoi ? Ca devrait sauter aux yeux mais j'vois pas

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut,
    Essaye de ne pas passer les éléments dans une variable
    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
    function colorer(){
    			var nom = document.getElementById('nom').value;
    			for (var i=0 ; i<document.getElementsByClassName('couleur_normale').length; i++)
    			{
    				if (document.getElementsByClassName('couleur_normale')[i].innerHTML == nom)
    				{
    					document.getElementsByClassName('couleur_normale')[i].className = "couleur_select";
    				}
    				else
    				{
    					document.getElementsByClassName('couleur_normale')[i].className = "couleur_normale";
    				}
    			}
    		}

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    J'ai copié-collé tel quel, et plus rien ne marche.

    En essayant de vérifier s'il n'y avait pas une petite faute quelque part dans ton code, je n'ai rien trouvé. Donc je refais appel à toi/vous :p

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Points : 78
    Points
    78
    Par défaut
    salut, sinon juste avant de colorer le nom du nouveau médecin réinitialise toutes les classes avec la valeur initiale. De ce fait le nom du médecin sélectionné précédément reprendra la couleur d'origine

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    En fait c'était idiot comme démarche.

    Ma variable "tab" ne contient que les cellules ayant pour classe "couleur_normale". Or, après un premier passage, je dois aussi parcourir les cellules ayant comme classe "couleur_select" (celles déjà sélectionnées).

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

Discussions similaires

  1. Plan sur toute les diapositives
    Par Otacon87 dans le forum Powerpoint
    Réponses: 3
    Dernier message: 27/08/2009, 12h39
  2. regexp : toutes les occurrences
    Par dev_KooK dans le forum Langage
    Réponses: 6
    Dernier message: 05/03/2009, 14h16
  3. supprimer toutes les occurrences d'une chaine dans une autre
    Par identifiant_bidon dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2007, 10h36
  4. supprimer toutes les feuilles dont le nom contient "produit"
    Par Amiral19 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/07/2007, 14h27
  5. Rch toutes les tables contenant un nom de colonne identique
    Par MorbidAngel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/09/2005, 10h22

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