Sé que esta es una mala práctica. No escriba código como este si es posible.¿Cómo funciona Javascript en línea (en HTML)?
Por supuesto, siempre nos encontraremos en situaciones donde un fragmento inteligente de Javascript en línea puede resolver un problema rápidamente.
estoy persiguiendo esta consulta en aras de la plena comprensión de lo que sucede (y los peligros potenciales) cuando algo como esto está escrito:
<a href="#" onclick="alert('Hi')">Click Me</a>
Por lo que yo puedo decir que esto es funcionalmente el mismo que
<script type="text/javascript">
$(function(){ // I use jQuery in this example
document.getElementById('click_me').onclick =
function() { alert('Hi'); };
});
</script>
<a href="#" id="click_me">Click Me</a>
Extrapolando esta parece que la cadena asignada a atribuir onclick
se inserta dentro de una función anónima que se asigna al controlador click del elemento. ¿Es este realmente el caso?
porque estoy empezando a hacer cosas como esta:
<a href="#" onclick="$(this).next().fadeIn(); return false;">Display my next sibling</a> <!-- Return false in handler so as not to scroll to top of page! -->
que trabaja. Pero no sé cuán pirata es esta. ¡Parece sospechoso porque no hay una función aparente de la que se está devolviendo!
Puedes preguntar, ¿por qué estás haciendo esto, Steve? Inline JS es una mala práctica!
Bueno, para ser sincero, estoy cansado de editar tres secciones diferentes de código solo para modificar una sección de una página, especialmente cuando estoy creando prototipos de algo para ver si funciona. Es mucho más fácil y, a veces, incluso tiene sentido que el código específicamente relacionado con este elemento HTML se defina en el elemento: cuando decido 2 minutos después que esta fue una idea terrible y terrible, puedo destruir el div completo (o lo que sea) y no tengo un montón de misteriosos JS y CSS cruft en el resto de la página, lo que ralentiza el renderizado muy ligeramente. Esto es similar al concepto de localidad de referencia, pero en lugar de fallas en el caché, estamos viendo errores y bloat de código.
Estás en lo correcto, es una función anónima. – bhamlin
Deberá enganchar la consulta para '# click_me' en el evento DOMready, o colocar la secuencia de comandos después del nodo. – Bergi
En una consola, haga 'document.getElementById (" click_me "). Onclick;'. O alerta. Verás que está en una función. –