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 :

[DOM] Onmouseover pour lancer une fonction avec arguments


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [DOM] Onmouseover pour lancer une fonction avec arguments
    Bonjour tout le monde,

    Je rencontre un petit soucis qui est a mon avis pas trop difficile a resoudre, il se trouve juste que je n'arrive pas a mettre le doigt dessus.
    Le probleme est le suivant:

    Ne voulant pas gerer les evennements directement en html (insertion de "onmouseover" ou autres manuellement) j'utilise du javascript qui se lance au chargement de la page. Mon petit script repere les balises qui m'interresse et y insere les attributs en fonction de mes besoins. Mais la, petit hic.

    Bien que la fonction toto dans la configuration suivante,
    Truc.onmouseover = toto;
    fonctionne bien, il n'en va pas de meme lorsque j'essaye de mettre des arguments a toto

    A l'heure actuel j'ai une variable ID qui contient comme son nom l'indique l'id d'une balise, et j'aimerais trouver un moyen de faire:

    Truc.onmouseover = toto(ID); (ce que je n'arrive pas a faire marcher pour le moment)

    Merci beaucoup pour votre aide a venir.

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    ça doit être dasn la FAQ pourtant ?


    soit addeventListener

    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Truc.onmouseover =function(){toto(ID)}
    ;
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour la reponse.

    J'avais effectivement trouvé la seconde solution mais ca n'etait pas tout a fait ce que je cherchais. Je pense m'etre mal explique.
    Si j'applique ma fonction toto(ID) a plusieurs parties de la page et ce avec plusieurs valeurs d'ID, lors du mouseover (par exemple) seul la derniere valeur de ID est pris en compte (Alors que j'aimerais que ce soit la valeur de ID au moment ou j'attribue la fonction toto)

    Desfois que je sois incomprehensible (ce ne serais pas la premiere fois) si j'ai le code suivant qui doit afficher waf ou miaou dans des cases respectivent d'un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    chien.onmouseover = function() { Show(ID,'waf');}; // ID= id de la case chien
    //....
    //....
    chat.onmouseover = function() { Show(ID,'miaou');}; //ID= id de la case chat
    qelque soit l'objet que j'active, le text waf ou miaou sera afficher dans la case chat car c'est la derniere valeur de "ID".

    Je vais jeter un coup d'oeil a la premiere solution. Et tenter la seconde avec des listes desfois que...

    Encore merci en tout cas.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Trock
    qelque soit l'objet que j'active, le text waf ou miaou sera afficher dans la case chat car c'est la derniere valeur de "ID".
    Mais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    chien.onmouseover = function() { Show(this.ID,'waf');}; // ID= id de la case chien
    //....
    //....
    chat.onmouseover = function() { Show(this.ID,'miaou');}; //ID= id de la case chat
    ça sera bien celui de l'objet survolé, non ?
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    essaie ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function creeFonction(id) {
        return function() {
            show(id);
    	return false;
        };
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    tonObjet.onmousemove = creerFonction(tonId);

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos reponses, malheureusement aucune ne semble marcher.

    Je vais voir si j'arrive a trouver une facon de contourner mon probleme sans trop alourdir le code.

  7. #7
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Si cela ne fonctionne pas, c'est qu'il nous manque des éléments ou que tu as mal exposé ton problème car le code de Ebzz avec this.ID semble la solution ...

    reste à savoir ce qu'est ID ??? si c'est l'id thid.id
    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 !

  8. #8
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Si tu as besoin d'information propre à un élément lors de la gestion
    d'un évènement qui le concerne, tu peux aussi envisager de stocker
    cette information de deux manières:

    1) Dans le noeud DOM. Il est légal de l'étendre avec une info perso,
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tonObjet.onmousemove = gestionnaireEvenement;
    tonObjet.ta_variable = 'ton_info';
    2) En plaçant l'info dans un attribut html, par exemple dans l'attribut class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div id='un_id' class='qqch autrechose'>...</div>
    function gestionnaireEvenement() {
      var args = this.className.split(' ');
    }
    Bon, il faut éviter de faire des choses trop sales dans les attributs html :-)
    mais ça peut dépanner.
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  9. #9
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    j'utilise parfois le style en paçant des trucs à la fin...
    on récupère ensuite le cssText que l'on torture ...
    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 !

  10. #10
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    bonjour,

    peut-être que l'explication donnée par FremyCompany dans cette discussion pourra t'aider.

  11. #11
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    peut être une autre piste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Truc.onmouseover =function(ID){toto(ID)}
    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 !

  12. #12
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    je viens de comprendre ton problème je l'ai déja rencontré et resolu..
    j'ai d'ailleures posté à ce propos je retrouve plus dasn la faq ou les contributions

    cela vient en fait de l'attribution dynamique


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i=0;i<10;i++){
        element.param=ID;
        element.onmouseover=function(){alert(this.param)}
    }
    si tu tentes directement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (i=0;i<10;i++){
            element.onmouseover=function(){alert(this.param)}
    }
    tu n'auras toujours que la dernière valeur de la boucle
    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 !

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

Discussions similaires

  1. [A03] docmd.openmodule pour une fonction avec argument
    Par cbleas dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/03/2009, 13h50
  2. Utiliser Createprocess pour lancer une fonction
    Par lolita4882 dans le forum C++
    Réponses: 3
    Dernier message: 14/03/2008, 12h01
  3. pb pour lancer une fonction relative à AD
    Par poussin_44 dans le forum VB.NET
    Réponses: 7
    Dernier message: 07/07/2007, 14h05
  4. [HELP] lancer une application avec argument
    Par thegorre dans le forum VBScript
    Réponses: 3
    Dernier message: 08/06/2007, 15h39
  5. creer une fonction avec arguments
    Par niglo dans le forum ASP
    Réponses: 3
    Dernier message: 03/06/2005, 08h04

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