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 :

Cacher Div suivant bouton radio


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Cacher Div suivant bouton radio
    Bonjour,

    Je shouaite cacher/montrer une Div suivant le bouton radio qui est selectionné, j'ai trouver un code en fouillent le probléme ces qu'il ne marche pas, il me sort une erreur :

    Uncaught ReferenceError: afficherCacher is not defined
    Je vois pas ou ce situe le probléme. voicie mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function afficherCacher(){
      if(document.getElementById(offre).checked){
          document.getElementById(divCacher).style.display="block";
      }else if (document.getElementById(demande).checked) {
          document.getElementById(divCacher).style.display="none";
      }
    }
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div class="field">
    	<label for="checkpart">Offres</label><input type="radio" id="offre"  name="choix" value="offres" onClick="afficherCacher();" /> 
    </div>
    <div class="field">
    	<label for="checkpro">Demandes</label><input type="radio" id="demande" name="choix" value="demandes" onClick="afficherCacher();" /> 
    </div>

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    à quel endroit ton code js est il placé/appelé dans ta page html ? Il faut faire attention à ce que ta fonction js soit définie avant l'affichage de ton élément DOM

  3. #3
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    La fonction devrait exister au moment où l'utilisateur clique. À moins que tu l'aies accidentellement déclarée dans le contexte d'une autre fonction. Vérifie qu'elle existe avec ta console : tape afficherCacher dans la ligne de commande et fais entrée, tu seras tout de suite fixé.

    Attention avec les id, il faut mettre des guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('offre')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('divCacher')
    etc.

    Quelques remarques à propos de ton code HTML. Tu as des <div class="field">. Tu connais l'élément <fieldset> ? Il est plus sémantique qu'une div, mais il y a des raisons de ne pas l'utiliser. Si tu connais et si tu as choisi de ne pas l'utiliser, ne tiens pas compte de ma remarque
    À propos de tes labels : ils référencent des éléments appelés checkpro et checkpart, mais je ne vois pas ces éléments dans ton code. En principe ils devraient référencer les inputs qui sont juste à côté, car le rôle d'un label c'est avant tout d'aider l'utilisateur à cliquer.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse.
    J'ai trouver mon erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('offre')
    Ce code ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(offre)
    J'ai laisser comme sa et cela marche il fallait juste que j'enleve les ; sur afficherCacher() ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="radio" id="demande" name="choix" value="demandes" onClick="afficherCacher()" />
    Pour checkpart et checkpro il correspondent a ma feuille css.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Uncaught TypeError: Cannot read property 'checked' of null
    Bonjour,

    J'ai une erreur qui est apparue mais je ne vois pas d'ou cela peut provenir si quelqu'un a une idée merci d'avance. voicie le code lié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function afficherCacher(){
      if(document.getElementById(offre).checked){
          document.getElementById(divCacher).style.display="block";
      }else if (document.getElementById(demande).checked) {
          document.getElementById(divCacher).style.display="none";
      }
     
    }
    mes bouton radio

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input class="radio" type="radio" id="offre"  name="choix" value="offres" checked="checked" onClick="afficherCacher()" /><label class="radio1">Offres</label>
    													<input class="radio" type="radio" id="demande" name="choix" value="demandes" onClick="afficherCacher()" /><label>Demandes</label><br /><br />

  6. #6
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    document.getElementById(offre) => null ou
    document.getElementById(demande) => null ou
    document.getElementById(divCacher) => null


    un coup de debugger et tu vas voir quel objet n'est pas défini

    c'est comme dans tous les langage il faut vérifier que l'objet existe avant d'utiliser ces propriétés

    A+JYT

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Salut et merci pour la réponse. J'ai deja utiliser le debugger il me donne que cette erreur et tout les variable sont bien définie ces bien la mon probléme je ne comprend d'ou provient l'erreur.

  8. #8
    Membre averti
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Points : 362
    Points
    362
    Par défaut
    Un indice peut-être : que contiennent les variables javascript offre, demande et divCacher ?
    Citation Envoyé par https://developer.mozilla.org/fr/docs/Web/API/Document.getElementById
    document.getElementById

    Résumé
    Renvoie l'élément dont l'ID est celui spécifié.

    Syntaxe
    element = document.getElementById(id);

    • element est un objet de type element.
    • id est une chaîne représentant l'identifant unique de l'élément voulu.

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Offre et Demande sont des input de type radio ces pour cette resond que la fonction et en mode checked pour declencher ou non divCacher. Qui contient une partie du formulaire suivant le bouton radio cocher.

  10. #10
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function afficherCacher(){
      if(! document.getElementById(offre)){
          alert("l'élément d'id " + offre + " n'existe pas");
      }else if(! document.getElementById(demande)){
          alert("l'élément d'id " + demande + " n'existe pas");
      }else if(! document.getElementById(divCacher)){
          alert("l'élément d'id " + divCacher + " n'existe pas");
      }else   if(document.getElementById(offre).checked){
          document.getElementById(divCacher).style.display="block";
      }else if (document.getElementById(demande).checked) {
          document.getElementById(divCacher).style.display="none";
      }
    }

  11. #11
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    inutile d'ouvrir une nouvelle discussion pour poursuivre la résolution de ton problème. Je fusionne donc les deux discussions.

    Relis la réponse qui t'a été faite par Watilin, confirmée par les différents intervenants.

  12. #12
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Désolè j'ai bien relus et la reponse de watilin ne change rien.

    sekaijin j'ai mis en place le controle que tu ma donner et j'obtient cette erreur :

    l'element d'id [ object HTMLInputElement] n'existe pas. je vois pas a quoi sa correspond

  13. #13
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Si je comprends bien tes variables offre, demande et divCacher sont déjà des références sur les éléments HTML correspondants ? Dans ce cas tu n'as pas besoin d'utiliser getElementById.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      if (offre.checked) {
        divCacher.style.display = "block";
      } etc.
    Mais ça marchera seulement si ces trois variables ont été initialisées plus tôt dans ton script.

    J'insiste, attention à la différence entre variable et chaîne : offre est une variable, "offre" est une chaîne. La fonction getElementById ne fonctionne que quand on lui passe des chaînes.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  14. #14
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Mais ça marchera seulement si ces trois variables ont été initialisées plus tôt dans ton script.
    Pas forcément, c'est le coté sournois de l'interprétation du moteur javascript lors de la construction du DOM.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <body>
    <div id="offre"></div>
    <script>
    alert( offre.tagName);
    </script>
    </body>
    affichera "DIV", c'est pour cette raison qu'il génére l'erreur
    l'element d'id [ object HTMLInputElement] n'existe pas

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

Discussions similaires

  1. [DOM] Rafraichissement de div IE boutons radios
    Par ejilan dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 14/10/2008, 15h30
  2. [debutant]cacher un bouton radio
    Par isoman dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/05/2008, 08h58
  3. Afficher/cacher une liste selon des boutons radios
    Par Machin3000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/01/2008, 18h26
  4. faire apparaître un DIV avec bouton radio
    Par laurent2 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/07/2007, 15h00
  5. déselection bouton radio suivant l'état d'un autre
    Par faucon54 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/05/2007, 14h18

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