javascript - used - void(0) trackid=sp-006
Qué es ''click()'' en JavaScript (5)
Creo que click () es un nombre de procedimiento reservado, por lo que no puede sobrescribirlo. Explica por qué cambiar el nombre y nada más lo hace funcionar.
Estaba jugando con JavaScript en FireFox y encontré un problema que se ilustra en el siguiente ejemplo:
<HEAD>
<script type="text/javascript">
function click()
{
alert("click");
}
</script>
</HEAD>
<BODY>
<input type="radio" onclick="click()">
</BODY>
Cuando hago clic en el botón de radio, no pasa nada y no hay errores (en Firebug)
Si cambio el nombre de la función a do_click y cambio onclick, recibo la alerta.
Entonces la pregunta es: ¿qué está pasando? el clic no parece ser una palabra reservada, o un símbolo existente
Creo que el método click () en javascript simula hacer clic en el botón. Así que esto debe ser una especie de bucle infinito ...
Editado para agregar: consulte MSDN para obtener documentación del método de clic
El código dentro de los controladores de eventos en línea está orientado al elemento, como si estuviera en un bloque with
.
Por lo tanto, dentro del controlador onclick
, el nombre click
resuelve con el método de click
del elemento.
Esto se puede demonstrated escribiendo alert(nodeName)
en el controlador
Los elementos DOM tienen un método de click() nativo.
Lo siguiente mostrará que hacer clic es un método nativo:
<input type="radio" onclick="alert(click.toString())">
Puede registrar su función de clic como el controlador de eventos de la siguiente manera. Dentro del controlador, this
se referirá al elemento HTML.
<input type="radio" id="foo" >
function click()
{
alert("click");
}
document.getElementById(''foo'').onclick = click;
Hay una excelente serie de artículos sobre eventos del navegador en http://www.quirksmode.org/js/introevents.html
el ''clic'' por sí mismo NO es una palabra clave reservada para javascript fuera del contexto del controlador de eventos en línea, como contestó Slaks.
Es decir, el método de "clic" definido en la pregunta es válido. Adjuntar el controlador de eventos ''externamente'' funcionará. Por ejemplo, usando jQuery:
$(''input'').click(click);