J'ai une fonction onclick qui effectue plusieurs tâches. Dans une autre fonction javascript, je n'ai pas accès aux variables de contexte nécessaires pour effectuer ces tâches. Pour contourner cela, j'ai simplement appelé la fonction onclick directement.Un moyen de passer des paramètres par programme à une fonction onclick?
Le problème que j'ai maintenant est que je voudrais effectuer une tâche après une action Ajax dans l'onclick complète. Est-il possible pour moi de passer une fonction à la méthode onclick d'un lien? À quoi ressemblerait l'attribut onclick?
par exemple. quelque chose comme ceci:
<a id="link3" href="javascript:void(0);" onclick="function(callback) { X(a); Y(b); Z(c, callback); };">click me</a>
En cliquant sur ce passerait « non défini » comme le rappel, alors que je pourrais aussi appeler explicitement comme ceci:
document.getElementById("link3").onclick(function() { alert("Completed all tasks"); });
est quelque chose comme cela possible? Fondamentalement, je veux être en mesure de passer un paramètre optionnel à la méthode onclick, mais si elle est absente, je veux qu'elle se comporte comme s'il y avait du code procédural dans onclick.
EDIT: Ajout plus de détails
Le cas d'utilisation est que le onclick appelle une fonction de recherche qui nécessite des variables de session. Lorsque des recherches régulières sont effectuées, il n'y a pas de problème, mais quand je souhaite rafraîchir les résultats de la recherche (par exemple quand l'utilisateur édite ou supprime un des résultats retournés), je dois appeler la même fonction de recherche que précédemment et imprimer un message de retour après qu'ils ont été actualisés. Cette sortie de message de retour est ce que je voudrais être dans la méthode de rappel. Je voudrais aussi mettre window.location.href à la page jusqu'à la rangée affectée dans le cas d'une modification ou d'une insertion.
J'ai accès à plusieurs variables du côté serveur que j'imprime directement à l'attribut onclick lorsque je rends la page. Dans d'autres fichiers Javascript que j'inclus sur ma page j'aimerais aussi pouvoir exécuter les mêmes fonctions contenues dans l'onclick. Le seul problème étant que je devrais passer toutes ces variables à ces fonctions indirectement à travers plusieurs méthodes intermédiaires dans la chaîne d'appel.
L'autre option consiste à imprimer ces valeurs à des valeurs de pages masquées, puis les récupérer dans ma méthode, mais je voudrais éviter cela car il serait encombrer tout juste pour que je puisse décorer mon appel de fonction avec certains séquelles visuelles.
À quel moment voulez-vous transmettre le paramètre à la méthode? Comment allez-vous injecter un paramètre dans l'événement click? Je ne comprends pas. –
@Pekka: Je viens d'ajouter un exemple de l'appeler explicitement plutôt qu'avec un clic de souris. –