Aller au contenu

Comment déclencher artificiellement l'évènement onclick d'un élément ?


MarvinLeRouge

Sujets conseillés

Salut,

Voilà, j'ai une série de liens avec des fonctions sur l'évènement onclick. Jusque là, rien que de très normal; là où ça se complique : au moment où une certaine condition est réalisée, je veux faire la même chose que si on avait cliqué sur le lien A (A étant déterminé et ayant une fonction affectée à onlick).

Quelqu'un saurait-il comment faire ?

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

En allant au plus simple, si tu as une fonction définie (avec un nom) qui est exécuté à l'événement onclick, rien ne t'empêche de l'appeler à n'importe quel moment de ton script en utilisant son nom suivi de ses paramètres entre parenthèses ou simplement une paire de parenthèses vide si aucun paramètre n'est utilisé. Peut-être ai-je mal compris ton problème, n'hésite pas à donner plus de précisions ou un morceau de code (même incomplet).

Lien vers le commentaire
Partager sur d’autres sites

Salut,

J'ai une fonction avec un nom, mais avec des paramètres dont les valeurs sont indiqués au niveau de l'appel de la fonction sur le lien.

Dans le javascript

function partieJoueurOut (joueur_id, lien)
{
lien.parentNode.style.display = "none";
x_maj_stats (joueur_id, $idPartie, majFinie);
}

Dans le html

<li><a href=\"#\" onclick=\"partieJoueurOut($joueur_id, this);\">$nom est OUT</a></li>

Les variables en $ sont des variables php. J'ai donc une liste de liens; quand on clique dessus, ils disparaissent, et déclenchent une mise à jour ajax du contenu. Sur une certaine condition, je voudrais faire "comme si" on avait cliqué sur le dernier lien visible (que je peux donc déjà repérer grâce à sa valeur de display.

Est-il possible, une fois qu'on a repéré un lien, de déclencher la fonction affectée au onclick de ce lien, un truc du genre "execute (this.onclick)" ?

Lien vers le commentaire
Partager sur d’autres sites

Ce qui reste à déterminer c'est "quand" tu veux exécuter cette fonction, parce que rien ne t'empêche de l'appeler n'importe quand comme ceci :

partieJoueurOut(129, document.getElementById('lien1'));

Les deux paramètres sont arbitraires, vu que l'appel c'est toi qui le génère tu décides ce que tu en fais.

Bien entendu il faut que tes liens aient chacun un identifiant (par rapport à cet exemple: <a href="#" id="lien1" ...></a>) , sinon il est plus difficile de récupérer l'élément.

Lien vers le commentaire
Partager sur d’autres sites

Le problème, c'est que pour faire ça, il faudrait que je connaisse directement l'information $joueur_id; or, je ne la connais qu'après avoir déterminé quel est le lien concerné, puisque le seul endroit dans la page où je peux récupérer cette info, c'est dans les attributs "du dernier lien qui n'a pas son display à none" (sachant qu'ils disparaissent les uns après les autres, dans un ordre imprévisible).

Lien vers le commentaire
Partager sur d’autres sites

Pour résumer, tu veux appeler une fonction avec un paramètre que tu ne connais pas et que selon ce que tu dis tu ne peux pas connaître sans refaire une requête...

À un moment il faut savoir comment est déclenché ton appel à cette fonction (ce qui fait que tu veux "émuler" le clic sur tel lien en particulier), et donc quel événement (autre que onclick) va faire appel à cette fonction. Ainsi le contexte sera défini et on pourra voir comment obtenir les bons paramètres. Mais pour le moment on ne peut pas demande à Javascript de deviner un paramètre ;)

P.S. : Si tu as un exemple pratique à nous montrer peut-être que d'autres participeront à notre discussion :)

Lien vers le commentaire
Partager sur d’autres sites

Trouvé : onclick peut être invoqué en tant que fonction. this.onclick() fonctionne donc parfaitement; et étant donné que je peux savoir quel est le lien à activer en vérifiant sa propriété display, c'est gagné.

Merci :)

Lien vers le commentaire
Partager sur d’autres sites

Mouais je ne t'ai pas trop aidé, mais de rien quand même... au moins j'aurais appris que les événements peuvent être déclenchés par un simple appel à la fonction portant le nom de ce même événement ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...