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 :

Pr�parer des fonctions dans un for


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Juillet 2015
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 27
    Localisation : France, Aveyron (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Par d�faut Pr�parer des fonctions dans un for
    Bonjour,

    Je d�bute en Javascript et je souhaitais pr�parer des animations � l'aide de fonctions.

    Le principe est que lorsque j'appuie sur une fiche, elle s'anime.
    J'ai donc un tableau de fiches et une fonction mouvement(i) qui permet d'animer la i-�me fiche de mon tableau.
    Je souhaitais donc pr�parer ces animations � l'aide d'un appel via onclick() dans une IIFE.
    Seulement, je me suis rendu compte que la fonction �tait appel�e avec la derni�re valeur prise par i (ici fiches.length), et non par la valeur qu'avait i au moment de la boucle.

    Comment puis-je faire pour rem�dier � ce probl�me ? Merci d'avance pour votre aide.

    PS : j'ai un nombre de fiches variable

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    (function() {
      for (var i = 0; i < fiches.length; i++) {
          fiches[i].onclick = function() {mouvement(i);};
      };
    })();

  2. #2
    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,
    il y a bien des fa�ons de proc�der dont une est donn�e dans
    Comment attribuer � des objets un onclick faisant appel � une variable de boucle ?

    Apr�s cela peux d�pendre de ce que tu veux faire avec ton i et ce qu'il est sens� repr�senter.

  3. #3
    Membre chevronn�
    Homme Profil pro
    Analyse syst�me
    Inscrit en
    Mai 2014
    Messages
    396
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arm�nie

    Informations professionnelles :
    Activit� : Analyse syst�me
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 396
    Par d�faut
    Bonjour,

    Voulez-vous tester la solution suivante?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    (function() {
      for (var i = 0; i < fiches.length; i++) {
          fiches[i].indice=i;
          fiches[i].onclick = function() {mouvement(this.indice);};
      };
    })();

  4. #4
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Juillet 2015
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 27
    Localisation : France, Aveyron (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Par d�faut
    Merci beaucoup !

    Ca fonctionne parfaitement.

  5. #5
    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 : 75
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant perp�tuel
    Secteur : Enseignement

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par d�faut
    Pour r�soudre le probl�me de la valeur de "i", il suffit d'utiliser le JS d'aujourd'hui, il proscrit l'usage de "var" au b�n�fice de "const" et de "let". Dans votre cas :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    (function() {
      for (let i = 0; i < fiches.length; i++) {
          fiches[i].onclick = function() {mouvement(i);};
      };
    })();

    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.)

  6. #6
    Membre chevronn�
    Homme Profil pro
    Analyse syst�me
    Inscrit en
    Mai 2014
    Messages
    396
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arm�nie

    Informations professionnelles :
    Activit� : Analyse syst�me
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 396
    Par d�faut
    Bonjour,

    danielhagnoul a �crit : ... JS d'aujourd'hui, il proscrit l'usage de "var" au b�n�fice de "const" et de "let"...
    Il se pose toutefois le probl�me de la compatibilit� avec les anciens navigateurs? Il est peut-�tre pr�f�rable d'attendre un peu avant d'utiliser "const" et "let"?

  7. #7
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    http://caniuse.com/#feat=let
    Environ 76 % d�usage � l�heure o� je poste. Chacun est libre de d�terminer si c�est un chiffre suffisant pour utiliser let en production ou pas.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  8. #8
    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
    Effectivement, la r�ponse de danielagnoul est la r�ponse la plus aboutie et actuelle si bien �videment on peut fixer les navigateurs � utiliser. Elle devrait peut �tre rejoindre la faq.

    Concernant la solution propos�e par eleydet je la trouve un peu capillotract�e bien que parfaitement juste

    Dans la fonction anonyme attach�e � l'�l�ment on sait que le this vaut cet �l�ment et c'est le pourquoi cela fonctionne, mais pourquoi passer par une fonction anonyme dans ce cas si c'est pour ex�cuter une fonction.
    Pour les n �l�ments on cr�e n fonctions anonymes qui font la m�me chose alors que l'on pourrait directement attacher la r�f�rence � la fonction appel�e ce qui outre le gain de m�moire serait plus lisible et accessoirement plus facilement maintenable.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // définition de la fonction
    function mouvement() {
        var objEnCours = this;
        console.log('indice : ' + objEnCours.indice);
    }
    // affectation de la fonction
    for (var i = 0; i < fiches.length; i++) {
        fiches[i].indice = i;
        fiches[i].onclick = mouvement;
    };

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

Discussions similaires

  1. R�ponses: 3
    Dernier message: 15/02/2007, 09h54
  2. definition des fonctions dans un js
    Par 18Marie dans le forum Servlets/JSP
    R�ponses: 3
    Dernier message: 26/08/2006, 23h26
  3. R�ponses: 1
    Dernier message: 05/11/2004, 17h15
  4. Enchainer des fonctions dans un onclick d'un bouton
    Par jpg dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 26/10/2004, 16h51
  5. [VBA-E] Ajouter des fonctions dans Excel
    Par Clezio dans le forum Macros et VBA Excel
    R�ponses: 3
    Dernier message: 06/03/2004, 01h18

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