[fonctions] Connaître l'objet appelant une fonction ?
2 réponses
XP Girl
Bonjour,
Je crée un formulaire dont un bouton appelle une fonction calcul() avec un
nombre indéfini d'arguments.
Je voudrais que la fonction fasse son petit calcul et modifie le champ
'value' du bouton.
Pour l'instant, je fais comme ceci :
<input type="button" name="mon_bouton" value="valeur de départ"
onClick="calcul(this,arg_1,arg_2,arg_3,arg_4);">
donc je passe toujours 'this' en argument.
La fonction finit par :
arguments[0].value = resultat;
Ca marche, mais je voudrais éviter d'avoir à ajouter à chaque fois 'this'
dans la liste d'arguments.
Est-ce qu'il est possible de récupérer le nom ou l'id de l'objet appelant
dans la function.
Il existe une propriété 'caller', mais ça ne fait pas ce que je veux.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
YD
<input type="button" name="mon_bouton" value="valeur de départ" onClick="calcul(this,arg_1,arg_2,arg_3,arg_4);">
donc je passe toujours 'this' en argument.
La fonction finit par :
arguments[0].value = resultat;
Ca marche, mais je voudrais éviter d'avoir à ajouter à chaque fois 'this' dans la liste d'arguments. Est-ce qu'il est possible de récupérer le nom ou l'id de l'objet appelant dans la function.
S'il n'y a qu'un seul bouton id="monBouton", on peut supprimer le this dans l'appel et écrire document.getElementById("monBouton").value=resultat;
Si, comme je l'ai compris, tu veux récupérer l'élément à l'origine de l'évènement, tu t'exposes à des codes plus complexes et différents selon les navigateurs ! Solutions moins satisfaisantes encore que le this, reconnu, quant à lui, universellement. Et prise de tête assurée avec les event.srcElement, e.target et tutti quanti.
Il existe une propriété 'caller', mais ça ne fait pas ce que je veux.
Rien à voir avec la gestion des évènements du navigateur. C'est pour permettre à une fonction d'accéder au texte de la fonction qui l'a appelée (c-à-d. la valeur de toString() de l'objet Function de la fonction appelante).
-- Y.D.
<input type="button" name="mon_bouton" value="valeur de départ"
onClick="calcul(this,arg_1,arg_2,arg_3,arg_4);">
donc je passe toujours 'this' en argument.
La fonction finit par :
arguments[0].value = resultat;
Ca marche, mais je voudrais éviter d'avoir à ajouter à chaque fois 'this'
dans la liste d'arguments.
Est-ce qu'il est possible de récupérer le nom ou l'id de l'objet appelant
dans la function.
S'il n'y a qu'un seul bouton id="monBouton", on peut supprimer le this dans l'appel et écrire
document.getElementById("monBouton").value=resultat;
Si, comme je l'ai compris, tu veux récupérer l'élément à l'origine de l'évènement, tu t'exposes à des codes plus complexes et différents selon les navigateurs ! Solutions moins satisfaisantes encore que le this, reconnu, quant à lui, universellement. Et prise de tête assurée avec les event.srcElement, e.target et tutti quanti.
Il existe une propriété 'caller', mais ça ne fait pas ce que je veux.
Rien à voir avec la gestion des évènements du navigateur. C'est pour permettre à une fonction d'accéder au texte de la fonction qui l'a appelée (c-à-d. la valeur de toString() de l'objet Function de la fonction appelante).
<input type="button" name="mon_bouton" value="valeur de départ" onClick="calcul(this,arg_1,arg_2,arg_3,arg_4);">
donc je passe toujours 'this' en argument.
La fonction finit par :
arguments[0].value = resultat;
Ca marche, mais je voudrais éviter d'avoir à ajouter à chaque fois 'this' dans la liste d'arguments. Est-ce qu'il est possible de récupérer le nom ou l'id de l'objet appelant dans la function.
S'il n'y a qu'un seul bouton id="monBouton", on peut supprimer le this dans l'appel et écrire document.getElementById("monBouton").value=resultat;
Si, comme je l'ai compris, tu veux récupérer l'élément à l'origine de l'évènement, tu t'exposes à des codes plus complexes et différents selon les navigateurs ! Solutions moins satisfaisantes encore que le this, reconnu, quant à lui, universellement. Et prise de tête assurée avec les event.srcElement, e.target et tutti quanti.
Il existe une propriété 'caller', mais ça ne fait pas ce que je veux.
Rien à voir avec la gestion des évènements du navigateur. C'est pour permettre à une fonction d'accéder au texte de la fonction qui l'a appelée (c-à-d. la valeur de toString() de l'objet Function de la fonction appelante).
-- Y.D.
bogs1
XP Girl a écrit le 11/01/2005 à 16h50 :
Bonjour,
Je crée un formulaire dont un bouton appelle une fonction calcul() avec un nombre indéfini d'arguments.
Je voudrais que la fonction fasse son petit calcul et modifie le champ 'value' du bouton.
Pour l'instant, je fais comme ceci :
<input type="button" name="mon_bouton" value="valeur de départ" onClick="calcul(this,arg_1,arg_2,arg_3,arg_4);">
donc je passe toujours 'this' en argument.
La fonction finit par :
arguments[0].value = resultat;
Ca marche, mais je voudrais éviter d'avoir à ajouter à chaque fois 'this' dans la liste d'arguments. Est-ce qu'il est possible de récupérer le nom ou l'id de l'objet appelant dans la function. Il existe une propriété 'caller', mais ça ne fait pas ce que je veux.
Merci
je répond avec 5 ans de retard mais comme ce sujet apparaît dans les premiers résultats de recherche google, ma réponse en aidera certainement d'autres :
ta solution : calcul.caller.arguments[0].target.value = resultat;
explications : calcul = ta fonction (ex: function calcul(){blablabla;} calcul.caller = une fonction appelée au moment du clique sur ton objet input (function (evt){calcul(arg1,arg2,arg3,arg4,...);}) calcul.caller.arguments[0] = l’évènement (evt) onclick de ton input calcul.caller.arguments[0].target = ton objet input
XP Girl a écrit le 11/01/2005 à 16h50 :
Bonjour,
Je crée un formulaire dont un bouton appelle une fonction calcul() avec
un
nombre indéfini d'arguments.
Je voudrais que la fonction fasse son petit calcul et modifie le champ
'value' du bouton.
Pour l'instant, je fais comme ceci :
<input type="button" name="mon_bouton"
value="valeur de départ"
onClick="calcul(this,arg_1,arg_2,arg_3,arg_4);">
donc je passe toujours 'this' en argument.
La fonction finit par :
arguments[0].value = resultat;
Ca marche, mais je voudrais éviter d'avoir à ajouter à
chaque fois 'this'
dans la liste d'arguments.
Est-ce qu'il est possible de récupérer le nom ou l'id de l'objet
appelant
dans la function.
Il existe une propriété 'caller', mais ça ne fait pas ce
que je veux.
Merci
je répond avec 5 ans de retard mais comme ce sujet apparaît dans les premiers résultats de recherche google, ma réponse en aidera certainement d'autres :
ta solution :
calcul.caller.arguments[0].target.value = resultat;
explications :
calcul = ta fonction (ex: function calcul(){blablabla;}
calcul.caller = une fonction appelée au moment du clique sur ton objet input (function (evt){calcul(arg1,arg2,arg3,arg4,...);})
calcul.caller.arguments[0] = l’évènement (evt) onclick de ton input
calcul.caller.arguments[0].target = ton objet input
Je crée un formulaire dont un bouton appelle une fonction calcul() avec un nombre indéfini d'arguments.
Je voudrais que la fonction fasse son petit calcul et modifie le champ 'value' du bouton.
Pour l'instant, je fais comme ceci :
<input type="button" name="mon_bouton" value="valeur de départ" onClick="calcul(this,arg_1,arg_2,arg_3,arg_4);">
donc je passe toujours 'this' en argument.
La fonction finit par :
arguments[0].value = resultat;
Ca marche, mais je voudrais éviter d'avoir à ajouter à chaque fois 'this' dans la liste d'arguments. Est-ce qu'il est possible de récupérer le nom ou l'id de l'objet appelant dans la function. Il existe une propriété 'caller', mais ça ne fait pas ce que je veux.
Merci
je répond avec 5 ans de retard mais comme ce sujet apparaît dans les premiers résultats de recherche google, ma réponse en aidera certainement d'autres :
ta solution : calcul.caller.arguments[0].target.value = resultat;
explications : calcul = ta fonction (ex: function calcul(){blablabla;} calcul.caller = une fonction appelée au moment du clique sur ton objet input (function (evt){calcul(arg1,arg2,arg3,arg4,...);}) calcul.caller.arguments[0] = l’évènement (evt) onclick de ton input calcul.caller.arguments[0].target = ton objet input