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 :

Remplir de couleur les cases d'un tableau


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Remplir de couleur les cases d'un tableau
    Bonjour à tous!
    Etant novice en JavaScript, je viens solliciter votre aide. Je possède un tableau rempli de chiffres. L'exercice demandé consiste à remplir les cases du tableau en fonction du chiffre indiqué dans la case. Je vois très bien comment faire ça en C, en Java, mais en JS (et on doit utiliser la méthode du DOM, sous forme d'arbre), cela me reste flou. Voilà mon code pour remplir mon tableau :

    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
    for(var annees = 0; annees < Meteo.length; annees+=12) {
                // création d'un élément <tr>
                ligne = document.createElement("tr");
            	var k=0;
     
            	for(var i = annees; i <= 11 + annees; i++) 
            	{
     
                    cell = document.createElement("td");
                    texte = document.createTextNode(Meteo[i].temp);
                    cell.appendChild(texte);
                    ligne.appendChild(cell);
                    j++;
     
                	if(j==12)
                	{
     
                    	cell = document.createElement("td");
                    	texte = document.createTextNode(Meteo[i].annee);
                    	cell.appendChild(texte);
                    	ligne.appendChild(cell);
                    	j=0;
                	}
    Je me doute bien que des "if" vont être nécessaires mais je ne vois pas comment construire ça (quels éléments créer etc...). Je possède aussi (si cela aide) d'une feuille de style (déjà redirigée vers ma page HTML).

    Merci d'avance!

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Bonjour,
    Il faut utiliser du javascript pur ou on peut passer par du jquery?
    Si le tableau est déja créer, tu pourrais récupérer l'ensemble des cellules et boucler dessus pour les couleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var table = document.getElementById("maTable"); 
    var cellules = table.getElementsByTagName("td"); 
    for (var i = 0; i < cellules.length; i++) { 
        if ( cellules[i].html() <10) { 
            cellules[i].style.backgroundColor = "red";
        } else if (...) {
              etc...
        }
    }
    ça doit donner un truc comme ça en js pur, on peut faire plus glamour avec jquery

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour! On ne doit pas se servir de JQuery encore, je vais essayer ce que tu proposes, en esperant y parvenir! Merci de ta réponse


    Update : J'ai essayé ce que tu proposes, j'ai ce type d'erreur dans la console du navigateur : "Uncaught TypeError: Cannot set property 'backgroundColor' of undefined"
    Voilà monde 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
    16
    17
    18
    19
    20
    for(var i = 0; i < Meteo.length; i++){
     
                if(Meteo[i].temp<5)
                    Meteo[i].style.backgroundColor = "red";
     
                else if ((Meteo[i].temp<10)&&(Meteo[i].temp>=5))
                    Meteo[i].style.backgroundColor = "blue";
     
                else if ((Meteo[i].temp<15)&&(Meteo[i].temp>=10))
                    Meteo[i].style.backgroundColor = "pink";  
     
                else if ((Meteo[i].temp<20)&&(Meteo[i].temp>=15))
                    Meteo[i].style.backgroundColor = "green"; 
     
                else if ((Meteo[i].temp<25)&&(Meteo[i].temp>=20))
                    Meteo[i].style.backgroundColor = "yellow"; 
     
                else if ((Meteo[i].temp<30)&&(Meteo[i].temp>=25))
                    Meteo[i].style.backgroundColor = "white";  
            }

  4. #4
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Bonjour,

    Que contient Meteo (comment l'as-tu initialisé ?)

    MiCetF

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Je viens de tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <table id="maTable">
      <tr>
        <td>10</td>
        <td>5</td> 
        <td>50</td>
      </tr>
      <tr>
        <td>10</td>
        <td>4</td> 
        <td>25</td>
      </tr>
    </table>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var table = document.getElementById("maTable"); 
    var cellules = table.getElementsByTagName("td"); 
    for (var i = 0; i < cellules.length; i++) { 
        if ( cellules[i].textContent <10) { 
            cellules[i].style.backgroundColor = "red";
        } 
    }
    comme ça ça marche, je te laisse adapter selon tes besoins!

    Bonne journée

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour!
    Météo est un objet sous forme de tableau contenant : une température, un mois, et une année. Je te mets les première lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var Meteo = [
     { annee: 1901 , mois: 1 , temp: -3 } ,
     { annee: 1901 , mois: 2 , temp: -2 } , ...
    Je vais voir comment arranger ce que vous proposez !

  7. #7
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Donc à partir de ce tableau (Array) JavaScript,
    tu dois construire un tableau html (table)
    dont chaque cellule aura une couleur de background qui dépend de la température...
    J'ai bon ?
    MiCetF

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    C'est exact

  9. #9
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 119
    Points : 203
    Points
    203
    Billets dans le blog
    1
    Par défaut
    tu peux faire ca en combinant css et js
    dans ta css tu crées des classes genre:
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    .froid{
     background-color:purple;
    }
    .frais{
     background-color:blue;
    }
    .tempere{
     background-color:yellow;
    }
     
    .chaud{
     background-color:red;
    }

    et dans ton js dans la boucle ajoute ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                    cell = document.createElement("td");
                    texte = document.createTextNode(Meteo[i].temp);
    var temperature=Meteo[i].temp/1 // caster en entier 
    var cssClass=temperature<=5?"froid":temperature>5&&temperature<=15?"frais":temperature>15&&temperature<25?"tempere":"chaud";
    cell.className=cssClass;
    //et voila

  10. #10
    Membre habitué
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Points : 144
    Points
    144
    Par défaut
    T'est fort en javascript Lakhdr +1

    Merci pour ton code !

Discussions similaires

  1. Réponses: 9
    Dernier message: 08/02/2013, 10h26
  2. Décalage avec les cases d'un tableau pour étendre mes évènements
    Par Chouller dans le forum PHP & Base de données
    Réponses: 42
    Dernier message: 16/04/2009, 09h51
  3. récupérer les cases d'un tableau
    Par fripette dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 25/04/2008, 14h14
  4. Réponses: 2
    Dernier message: 16/03/2008, 10h55
  5. recupere les cases d'un tableau dans un JTextField
    Par naazih dans le forum Composants
    Réponses: 3
    Dernier message: 22/03/2007, 22h24

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