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 :

Modifier le CSS d'une classe


Sujet :

JavaScript

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut Modifier le CSS d'une classe
    Bonsoir,

    je souhaite, lorsque l'utilisateur clique sur un lien passer le display de 2 div de block à none. J'ai donc attribué la classe "cacher" à ces 2 divs, et lorsque l'utilisateur clique sur le lien, ça envoie sur une page où j'ai mis ce code
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	<script>
    	var classCacher = document.getElementsByClassName("cacher");
    	for (i=0;i<classCacher.length;i++) {
    	     i.style.display=none;
    	}
    	</script>
    mais le display des 2 div reste à block. Comment faudrait-il faire ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var classCacher = document.getElementsByClassName("cacher");
     
    for ( var i = 0; i < classCacher.length; i++ ){
      classCacher[i].style.display = "none";
    }

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Merci
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ca se fait aussi plus facilement en jQuery (que tu utilises par ailleurs...).

  5. #5
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Euh je ne suis pas sûr de comprendre... Pourquoi parcourir les éléments en JavaScript et modifier leur style en inline quand on peut simplement utiliser CSS ?

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    .cacher { display: none; }
    One Web to rule them all

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    La raison est que ça doit être dynamique : au départ, le display est à block et c'est seulement quand l'utilisateur clique sur un des 2 liens de navigation que je passe le display à none.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    C'est l'attribution de la classe qui est dynamique non ? Autrement tu pourrais avoir des éléments avec une classe "cacher" qui sont visibles...*

    exemple: http://jsfiddle.net/yuLmcqhr/
    One Web to rule them all

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Oui, tout-à-fait, c'est bien l'attribut...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour Laurent,

    explique-nous un peu comment tu effectues le "onclick"* sur le lien
    (code à l'appui)

    * :
    • en Javascript pur
    • en jQuery

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Je viens d'écrire une réponse (assez longue) ; ma connexion s'est terminée donc au moment d'envoyer le post, ça m'a demandé de me reconnecter, ce que j'ai fait, mais après, post disparu...donc je recommence :

    désolé mais pas de onclick. Les liens sont de ce genre : <a href="'.$_SERVER['PHP_SELF'].'?page=planning&m='.$monthValue.'&y='.$yearValue.'&eff=1">&lt;&lt;</a>. Le PHP_SELF indique qu'on reste sur la même page ; mais cette page en inclut une deuxième dont le nom est donné par le paramètre page, donc ici, on inclue la page planning.htm (l'extension est toujours htm). Le fait de changer l'attribut display de la classe "cacher" est donné par le paramètre eff et ensuite dans planning.htm :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	if (isset($_GET['eff'])) {?>
    	<script>
    	var classCacher = document.getElementsByClassName("cacher");
    	for (i=0;i<classCacher.length;i++) {
    		classCacher[i].style.display = "none";
    	}
    	</script>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    c'est donc bien ce qu'avait flairé SylvainPV.

    Nul besoin de JavaScript ici :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php if (isset($_GET['eff'])) { ?>
    <style type="text/css">.cacher { display: none; }</style>
    <?php } ?>
    A mettre avant </head>.


    En dehors du fait que tu manques de technique(s), c'est surtout la LOGIQUE* qui te fait le plus défaut.
    *Ici, il s'agissait de trouver la solution la plus simple.

    N.B. Et comme tu n'as QUE 2 div à masquer, je me serais même passé d'ajouter une class, en mettant directement sur chaque div :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div<?php if (isset($_GET['eff'])) { echo ' style="display: none;"'; }; ?>>
    .....
    </div>

  12. #12
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    J'irais même plus loin, quitte à recharger toute une page générée via PHP, autant virer complètement les blocs cachés du HTML généré. Ce sera ça de moins à charger côté client.

    Mais bon, si on commence à faire la fine bouche niveau performances, autant se passer de PHP complètement
    One Web to rule them all

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Il y a une impossibilité dans les propositions de Jérôme au post #11 : la variable $_GET['eff'] n'existe pas dans les fichiers qui contiennent les div ; en effet, ces fichiers sont inclus dans celui sur lequel je fais le lien.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/02/2011, 15h40
  2. Réponses: 16
    Dernier message: 24/02/2010, 14h14
  3. modifier le css dans une balise iframe
    Par psycoma dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 11/08/2009, 14h28
  4. Comment modifier un contrôle depuis une classe ?
    Par pot2yaourt dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/07/2009, 15h01
  5. Réponses: 6
    Dernier message: 21/05/2006, 20h37

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