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 :

Passer un ID à une fonction javascript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut Passer un ID à une fonction javascript
    Bonjour tout le monde,

    J'ai un tableau composé de TR et de TD.

    Les TD ont chacun un ID unique du genre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td id="AM_'.$numero_jour.'_'.$_POST['LeMois'].'_'.$_POST['Lannee'].'" onmousedown="menuContextuel(event, \'menucontextuel1\');"> &nbsp; </td>

    J'essaie de passer l'ID à une fonction javascript.

    this.id ne fonctionne pas car c'est l'ID de mon menu qui est passé à la fonction et non l'id de ma TD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div id="menucontextuel1" class="menucontextuel">
      		<ul id="test">
      			<li><em>Menu Personnalisé</em></li>
      			<li><a href="" id="test" onclick="hideMenu(); occupe(this.id); return false;">Occup&eacute;</a></li>
      			<li><a href="" onclick="hideMenu(); return false;">Libre</a></li>
      		</ul>
      	</div>
    ici, il passe "test" par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li><a href="" id="test" onclick="hideMenu(); occupe(this.id); return false;">Occup&eacute;</a></li>
    Je devrais peut être récupérer l'ID du TD lorsqu'il obtient le focus ou lorsuqe l'on clic dessus.


    Merci d'avance.

    beegees

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Ton problème est logique: le this fait référence à l'élément du DOM pour lequel le code s'exécute, et non un de ses parents ou autre.
    A toi de retrouver l'id de ta TD à partir de l'élément concerné (ta balise A ici) , par exemple en cherchant dans l'arborescence des "ancêtres" avec une boucle du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //node correspond à ton élément this
    while (node.nodeName != 'TD' && node!=null) {
        node = node.parentNode;
    }
    A tester,

    ERE

  3. #3
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 215
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div id="menucontextuel1" class="menucontextuel">
      		<ul id="test">
      			<li><em>Menu Personnalisé</em></li>
      			<li><a href="" id="test" onclick="hideMenu(); occupe(this.id); return false;">Occup&eacute;</a></li>
      			<li><a href="" onclick="hideMenu(); return false;">Libre</a></li>
      		</ul>
      	</div>
    Je vois une grosse erreur dans le code ci-dessus : la règle en matière d'ID est qu'ils soient uniques, utilisés une seule fois dans une page html. Alors quand je vois "test" sur le ul et sur un lien dans un des li...

    Et dans cet exemple je trouve logique que l'id passé soit "test", puisque c'est bien l'id du lien sur lequel se trouve l'appel à la fonction

  4. #4
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    Salut,

    Ton problème est logique: le this fait référence à l'élément du DOM pour lequel le code s'exécute, et non un de ses parents ou autre.
    A toi de retrouver l'id de ta TD à partir de l'élément concerné (ta balise A ici) , par exemple en cherchant dans l'arborescence des "ancêtres" avec une boucle du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //node correspond à ton élément this
    while (node.nodeName != 'TD' && node!=null) {
        node = node.parentNode;
    }
    A tester,

    Salut,

    Merci pour ta réponse.

    J'ai finalement trouvé une autre solution.

    J'envoie un paramètre supplémentaire sur le onmouseover.

    Arrivé dans la fonction, j'appelle une autre fonction js (AJAX).

    Cela règle donc mon problème mais ton code pourrait me servir dans le future.

    Merci encore pour ton aide.

    beegees

    ERE
    Citation Envoyé par michel.bosseaux Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div id="menucontextuel1" class="menucontextuel">
      		<ul id="test">
      			<li><em>Menu Personnalisé</em></li>
      			<li><a href="" id="test" onclick="hideMenu(); occupe(this.id); return false;">Occup&eacute;</a></li>
      			<li><a href="" onclick="hideMenu(); return false;">Libre</a></li>
      		</ul>
      	</div>
    Je vois une grosse erreur dans le code ci-dessus : la règle en matière d'ID est qu'ils soient uniques, utilisés une seule fois dans une page html. Alors quand je vois "test" sur le ul et sur un lien dans un des li...
    Oui en effet, j'avais mis ça pour les testes.

    Et dans cet exemple je trouve logique que l'id passé soit "test", puisque c'est bien l'id du lien sur lequel se trouve l'appel à la fonction
    Je trouve cela logique aussi.

    Merci à vous deux pour vos réponses.

    beegees

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

Discussions similaires

  1. passer les paramètres à une fonction javascript
    Par phenix1988 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/01/2012, 23h19
  2. comment passer un tableau à une fonction javascript
    Par beegees dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/03/2009, 19h48
  3. passer une fonction javascript dans un bouton
    Par zthibaut dans le forum Flash
    Réponses: 3
    Dernier message: 06/11/2006, 12h37
  4. Réponses: 3
    Dernier message: 26/06/2006, 13h48
  5. Réponses: 11
    Dernier message: 10/05/2004, 10h49

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