Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[fonctions] Connaître l'objet appelant une fonction ?

2 réponses
Avatar
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.

Merci

2 réponses

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

Avatar
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