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 :

Port�e de variable


Sujet :

JavaScript

  1. #1
    Membre �clair�
    Homme Profil pro
    �tudiant
    Inscrit en
    D�cembre 2015
    Messages
    262
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : D�cembre 2015
    Messages : 262
    Par d�faut Port�e de variable
    Bonjour, je n'arrive pas � comprendre pourquoi je n'arrive pas � r�cup�rer la bonne valeur de ma variable btnAbsent ?

    Voir ligne 13 et 17
    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
    // LE MODAL EST APPELE EN ATTRIBUANT DATA-TOGGLE ET DATA-TARGET A CHAQUE BOUTON
    var btnAbsents = document.getElementsByClassName('Absent');     
    var select = document.querySelector('.custom-select'); 
     
    btnAbsents.forEach(function(btnAbsent){
     
     btnAbsent.setAttribute('data-toggle', 'modal'); 
     btnAbsent.setAttribute('data-target', '#modalAbsent');
     
     btnAbsent.addEventListener('click', function(){
     
      label = btnAbsent.nextElementSibling; 
      console.log(btnAbsent); // --> je récupère bien mon ELEMENT HTML en fonction du click (ELT 1 - ELT 2 - ELT 3 ..... ok)
     
      select.addEventListener("change", function(e){
     
       console.log(btnAbsent); // --> je récupère systématiquement et uniquement mon ELEMENT HTML 1 quel que soit le click sur les btnAbsent (Elt1 - Elt1 - Elt 1....) alors que je pensais récupérer (ELT 1 - ELT 2 - ELT 3) en fonction du click
       btnAbsent.value = motifAbsence;   
     
       var motifAbsence = select.value;
       label.innerHTML = (' Absent : ' + motifAbsence); 
     
       $('#modalAbsent').modal('hide');
       e.stopImmediatePropagation();
      })
     })
    });
    Si vous aviez une explication et une solution. Merci d'avance

  2. #2
    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
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var select = document.querySelector('.custom-select');
    c'est un selection ...
    il faut boucler sur ces �l�ments pour faire le addEventListener
    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 !

  3. #3
    Mod�rateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Bonjour,
    ce n'est pas un soucis de scope mais plut�t un soucis de coh�rence/logique de ton code.

    Tout d'abord la m�thode document.getElementsByClassName retourne une HTMLCollection et un HTMLCollection ne poss�de pas de m�thode forEach mais peut-�tre l'as tu prototyp�e avant dans ton code.

    Il faut �tre conscient qu'� chaque fois que tu cliques sur un �l�ment � btnAbsents � tu ajoutes un �v�nement onchange � ton <select>.

    Donc si tu cliques sur #1 puis sur #2 et enfin sur #3, lors du change tu vas avoir trois console.log qui vont s'afficher.
    J'ai donc du mal � voir ce que tu veux au final !

    Un autre point, dans ces lignes
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
       btnAbsent.value = motifAbsence;   
       var motifAbsence = select.value;
    tu affectes une valeur non encore d�finie, le � hosting � � ses limites !

    Un dernier point, lorsque l'on utilise jQuery on l'utilise, on ne mixe pas les �critures, vanilla et jQuery

    Citation Envoy� par SpaceFrog
    c'est un selection ...
    il faut boucler sur ces �l�ments pour faire le addEventListener
    il manque All pour que cela retourne une NodeList.

  4. #4
    Invit�
    Invit�(e)
    Par d�faut
    Bonjour,

    d�j�, avec jQuery, �a simplifie nettement l'�criture ici...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    $('.Absent').on('click', function(){
    ...
    Enfin bon. Avoir un bout du code HTML associ� ne serait pas du luxe.

Discussions similaires

  1. [FLASH MX] Port�e des variables ???
    Par mic79 dans le forum Flash
    R�ponses: 2
    Dernier message: 08/02/2005, 10h21
  2. Port�e des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    R�ponses: 3
    Dernier message: 03/11/2004, 10h14
  3. [XSL]Probl�me de port�e des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    R�ponses: 6
    Dernier message: 17/09/2004, 10h34
  4. [Port�e] port�e des variables
    Par parksto dans le forum Langage
    R�ponses: 7
    Dernier message: 09/05/2004, 21h05
  5. [FLASH MX 2004][XML]port�e de variable
    Par marco_ dans le forum Flash
    R�ponses: 8
    Dernier message: 29/04/2004, 15h47

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