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 :

Insérer un bouton qui peut fermer l'élément où il a été inséré..


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 146
    Par défaut Insérer un bouton qui peut fermer l'élément où il a été inséré..
    Bonjour, auriez-vous une soluce pour ce problème ?

    J'ai essayé de plusieurs manières avec ce code :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    element.innerHTML+="<p><div class='bouton' onclick='close(\"pannelmedia\");'>Fermer</div></p>";

    ça rajoute bien le bouton mais je n'arrive pas à lancer la fonction close(id).

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function close(id){
        let element=document.getElementById(id);
        element.style.display="none";
     
    }

  2. #2
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Salut nouby,

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    element.innerHTML = '<p><button id="monbouton" class="bouton" onClick="closeParent(this.id)">Fermer</button><p>'
     
    function closeParent(id) {
      document.getElementById(id).parentElement.style.display='none';
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 146
    Par défaut
    Merci !!!

    tu me dépannes super, car j'étais bloqué avec ce truc !

    je voulais utiliser une fonction qui puisse fermer n'importe quel élément dont on lui donne l'id, afin d'économiser en sources de code, je vais voir comment adapter ça


    EDIT :

    J'ai essayé comme ça, avec ton code mais aucun résultat, le bouton este inactif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function close(id){
    //    let element=document.getElementById(id);
    //    element.style.display="none";
        document.getElementById(id).parentElement.style.display='none';
    }
     
     
    element.innerHTML+='<p><div id="fermedia" class="bouton" onclick="close(this.id);">Fermer</div></p>';

    EDIT2 :

    Apparement le bouton est bien détecté par le click car si je lance un alert() à la place de close(), l'alert apparait.

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    element.innerHTML+='<p><div id="fermedia" class="bouton" onclick="alert();">Fermer</div></p>';

    Le click est aussi détecté si je met ça dans la fonction close() :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
        document.getElementById(id).parentElement.style.left="0"; // Déplace le parent.

    EDIT DER :

    ça a marché subitement quand j'ai mis ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function close(id){
    //    let element=document.getElementById(id);
    //    element.style.display="none";
        document.getElementById(id).parentElement.style.display="none";
    }
    à croire que c'est les guillemets de "none" qui font la différence ...

  4. #4
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Attention, la function close(id) ne fonctionne pas chez moi, surement du fait que close est un mot réservé en JavaScript. C’est pour cela que je l’avais renommé en closeParent.

    Sur les apostrophes ou guillemets pour la valeur du style, résultat sera le même.

    je voulais utiliser une fonction qui puisse fermer n'importe quel élément dont on lui donne l'id,...
    Avec cette méthode, le parent du bouton sera sélectionné. Tu ajoutes simplement le même nom de class à tes boutons.
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    element.innerHTML = '<p><button class="bouton">Fermer</button><p>'
     
    for (const boutonSelect of document.getElementsByClassName('bouton')) {
        boutonSelect.addEventListener('click', () => {
            boutonSelect.parentElement.style.display = "none";
        })
    }

  5. #5
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 146
    Par défaut
    Oui tu as raison pour close(), j'avais renomé en laferme() et ça marchait, mais quand j'ai remis en close() ça marchait plus.

    OK pour tes explications, merci beaucoup, c'est super !!!

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 201
    Par défaut
    Bonjour,
    Citation Envoyé par ASCIIDEFOND
    Attention, la function close(id) ne fonctionne pas chez moi, surement du fait que close est un mot réservé en JavaScript. C’est pour cela que je l’avais renommé en closeParent.
    close n'est pas un mot clé mais effectivement il semblerait qu'il y est collision entre la méthode window.close et la fonction close lors de JavaScript inline.

    Dans la mesure où la fonction est appelée dans un addEventListener cela fonctionne, comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.querySelector(".bouton").addEventListener("click", function(){ close(this.parentNode)})
    Dans le cas présent on peut simplement se passer d'une fonction externe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elem.insertAdjacentHTML("beforeend", "<button class='bouton' onclick='this.parentNode.style.display=\"none\"'>Fermer</button>");
    ou si l'on ne veut pas échapper les guillemets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elem.insertAdjacentHTML("beforeend", `<button class="bouton" onclick="this.parentNode.style.display='none'">Fermer</button>`);

  7. #7
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 146
    Par défaut
    Merci de tes précisions !
    je vais étudier tout ça !

  8. #8
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Salut NoSmoking,

    Le lien n'existe pas en Français
    ↪ voir : Template literals (Template strings)
    https://developer.mozilla.org/en-US/...plate_literals

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 201
    Par défaut
    Le lien n'existe pas en Français
    la page existe, testée avant d'envoyer la réponse, mais il semblerait que MDN ait des soucis avec ses pages traduites, donc le plus fiables est donc les pages en-US.

    Sinon à voir également : https://fr.javascript.info/string

  10. #10
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 146
    Par défaut
    Oui MDN a des problemes avec les pages en français en tous cas, j'ai pas vu les autres, mais je suis déjà allé voir la page anglaise, ça marche.
    Merci pour les liens !!!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/10/2017, 11h05
  2. [WD-2010] Insérer un bouton qui affiche les propriétés
    Par iratihel dans le forum VBA Word
    Réponses: 3
    Dernier message: 28/02/2013, 12h46
  3. Réponses: 5
    Dernier message: 21/01/2010, 15h35
  4. Comment insérer une date qui peut être nulle ?
    Par guidav dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/01/2007, 16h18

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