Qu'est ce que 'click ()' en JavaScript

Je jouais avec JavaScript dans FireFox et frappais un problème illustré dans l'exemple suivant:

<HEAD> <script type="text/javascript"> function click() { alert("click"); } </script> </HEAD> <BODY> <input type="radio" onclick="click()"> </BODY> 

Lorsque je clique sur le bouton radio, rien ne se produit et aucune erreur (dans Firebug)

Si je change le nom de la fonction pour faire un clic, puis changez l'onclick, puis je reçois l'alerte.

La question est donc: qu'est-ce qui se passe? Le clic ne semble pas être un mot réservé ou un symbole existant

Le code dans les gestionnaires d'événements en ligne est scopé à l'élément, comme s'il était dans un bloc with .

Par conséquent, dans le onclick , le click nom résout la méthode de click l'élément.

Cela peut être démontré en écrivant une alert(nodeName) dans le gestionnaire

Les éléments DOM ont une méthode native click () .

Les éléments suivants montrent que le clic est une méthode native:

 <input type="radio" onclick="alert(click.toString())"> 

Vous pouvez enregistrer votre fonction de clic comme le gestionnaire d'événements comme suit. Dans le gestionnaire, this se référera à l'élément HTML.

 <input type="radio" id="foo" > function click() { alert("click"); } document.getElementById('foo').onclick = click; 

Il existe une excellente série d'articles sur les événements du navigateur à http://www.quirksmode.org/js/introevents.html

Je pense que le clic () est un nom de procédure réservé, donc vous ne pouvez pas l'écraser. Explique pourquoi changer le nom et rien d'autre le fait fonctionner.

Je pense que la méthode click () sur javascript simule en cliquant sur le bouton. Donc, ce doit être une sorte de boucle infinie …

Modifié pour ajouter: Consultez MSDN pour la documentation de la méthode de clic

«Cliquer» par lui-même n'est PAS un mot-clé réservé javascript hors du contexte du gestionnaire d'événements en ligne lorsque Slaks a répondu.

C'est-à-dire que la méthode "clic" définie dans la question est valide. La connexion du gestionnaire d'événements «à l'extérieur» fonctionnera. Par exemple en utilisant jQuery:

 $('input').click(click);