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 :

Comment modifier une rule de class CSS en javascript ?


Sujet :

JavaScript

  1. #1
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retrait�
    Inscrit en
    Novembre 2005
    Messages
    2 613
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 73
    Localisation : France, Finist�re (Bretagne)

    Informations professionnelles :
    Activit� : Retrait�
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par d�faut Comment modifier une rule de class CSS en javascript ?
    Saluton,
    Ce que je cherche � faire me para�t simple, voire naturel, et cependant �a ne semble pas une pratique courante.
    J'ai des lignes de tableau html <tr> qui sont d�clar�es comme rattach�es � l'une ou l'autre des class[es] CSS .soir ou .midi
    Dans la feuille de style J'ai sur ma page deux boutons radio
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
                <input type="radio" onchange="swapMS();" checked="checked" name="MidiSoir" value="midi"/>
                MIDI&nbsp;&nbsp;||&nbsp;&nbsp;SOIR
                <input type="radio" onchange="swapMS();" name="MidiSoir" value="soir"/>
    Dans la fonction javascript swapMS(), je souhaiterais qu'en fonction de la valeur de la rule display de la class .midi celle-ci passe � 'none' et celle de .soir � 'table' et inversement.
    Mais je ne trouve pas comment acc�der aux rules d'une class en javascript.
    Comment feriez-vous ?
    Merci.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment �muler un tableau crois� [quasi] dynamique
    et : Une �nigme math�matique r�solue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  2. #2
    Membre �m�rite
    Homme Profil pro
    Touche � tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    811
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Alg�rie

    Informations professionnelles :
    Activit� : Touche � tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 811
    Par d�faut
    Bonjour,
    Je ne sais pas si �a peux t'aider.

    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
    39
     
    <head>
    <style type="text/css">
    <!--
    .midi {
    	background-color: #00FF66;
    }
    .soir {
    	background-color: #0066CC;
    }
    -->
    </style>
    <script type="text/JavaScript">
    <!--
     
    function swap()
    {
    var ancien=document.getElementById("latr1").className;
    if (ancien=='midi') {nouveau='soir';} else {nouveau='midi';}
    document.getElementById("latr1").className=nouveau;
    }
    //-->
    </script>
    </head>
     
    <body>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr id="latr1" class="midi">
        <td>a1</td>
      </tr>
      <tr class="soir">
        <td>a2</td>
      </tr>
      <tr>
        <td>a3</td>
      </tr>
    </table>
     
    <input name="leboutton" type="button" value="boton" onClick="swap();">
    Tu aurais compris que le but est de jouer sur className.

  3. #3
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retrait�
    Inscrit en
    Novembre 2005
    Messages
    2 613
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 73
    Localisation : France, Finist�re (Bretagne)

    Informations professionnelles :
    Activit� : Retrait�
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par d�faut
    Merci,
    Je demeure surpris qu'on en revienne toujours aux m�mes types de solutions, changer la class des �lements plut�t que modifier la r�gle d'une classe.
    En l'occurence j'ai 15 lignes de class .matin et 15 lignes de class .soir

    Donc au lieu de modifier deux r�gles de class il faut modifier 30 className d'�l�ments.
    Je ne trouve pas �a tr�s optimis�.
    Mais, s'il n'y a pas mieux, je ferais avec, sauf qu'un id doit �tre unique alors que l� j'ai 30 �l�ments � modifier.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment �muler un tableau crois� [quasi] dynamique
    et : Une �nigme math�matique r�solue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  4. #4
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    trois possibilit�s en fait :


    * soit comme propos� ci dessus tu poss�des deux class et tu faire le swap des classNames,
    * soit tu attaque directement la propri�t� du style en question:
    * soit tu modifies le css lui m�me et attaquant par les rules :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    crossRules= (document.styleSheets[0].cssRules)?document.styleSheets[0].cssRules:document.styleSheets[0].rules
    et ensuite tu scannes la collection crossRules pour modifier le selectorText voulu
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    if(crossRules[i].selectorText.toLowerCase()=="div"){ //là tu as trouvé la class des divs
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  5. #5
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retrait�
    Inscrit en
    Novembre 2005
    Messages
    2 613
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 73
    Localisation : France, Finist�re (Bretagne)

    Informations professionnelles :
    Activit� : Retrait�
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par d�faut
    Bon, tout d'abord, merci de vos contributions.
    Finalement voici ce que j'ai fait.
    La partie de la feuille de style concern�e est devenue:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    #soir tr{display:none;}
    #midi tr {display:table-row;}
    En effet, j'ai eu besoin d'affecter mes <tr> � d'autres classes (.entrees .plats et .desserts).
    Et le javscript
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function swapMS(){
        crossRules= (document.styleSheets[0].cssRules)?document.styleSheets[0].cssRules:document.styleSheets[0].rules;
        var i = 0;
        while(crossRules[i]){
            if((crossRules[i].selectorText=='#soir tr') || (crossRules[i].selectorText=='#midi tr')){
                if(crossRules[i].style.display=='none'){crossRules[i].style.display='table-row';}
                else{crossRules[i].style.display='none';}
                }
            i++;
            }
        }
    C'est assez ballot de devoir parcourir toute la liste des r�gles de la feuille de style pour n'en affecter que 2, mais, faute d'une fonction getRuleBySelectorText, je ne vois pas comment optimiser.
    Encore merci.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment �muler un tableau crois� [quasi] dynamique
    et : Une �nigme math�matique r�solue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 18/02/2006, 23h21
  2. Appeler une classe CSS avec Javascript
    Par p0Kep0K dans le forum Mise en page CSS
    R�ponses: 2
    Dernier message: 13/02/2006, 14h50
  3. R�ponses: 9
    Dernier message: 05/01/2006, 14h01
  4. Comment modifier une page affich�e dans un TWebBrowser ?
    Par dreamincoco dans le forum Composants VCL
    R�ponses: 7
    Dernier message: 24/03/2005, 14h07
  5. comment modifier une texture?
    Par tibyann dans le forum DirectX
    R�ponses: 6
    Dernier message: 16/06/2004, 15h27

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