2012-05-08 16 views
7

Hice este violín corto: http://jsfiddle.net/NZnN2/. ¿Por qué no aparece la alerta cuando hago clic en el botón?Función de Javascript no se llama en "violín"

+1

Como @Rocket señaló, debe establecer 'sin envoltura' en lugar de 'onload' en la barra izquierda . – Imp

+5

Estoy perdido. ¿Por qué esta pregunta es rechazada tan agresivamente? Podría mejorarse un poco explicando un poco más acerca de cuál es el problema exactamente, pero ¿tiene un violín que sea fácil de usar y vea el problema ...? – Beska

+5

Sin código en la pregunta, sin explicación de lo que está sucediendo/no está sucediendo, título terrible. – Interrobang

Respuesta

11

Debido a que su código JavaScript está en un controlador onload, lo que significa display_message no es global, y por lo tanto no es accesible por el HTML.

Desde que ha seleccionado onLoad, el JavaScript se inyecta en la página de la siguiente manera:

window.addEvent('load', function() { 
    function display_message(){ 
     alert("woohoo!"); 
    } 
}); 

Como se puede ver, display_message sólo es accesible dentro de esa función anónima. Para que el ejemplo funcione, cambie onLoad a no wrap (head) o no wrap (body) (en el lado izquierdo de la página).

Ejemplo de trabajo: http://jsfiddle.net/NZnN2/8/

+3

En otras palabras: es un problema de alcance –

+2

... y por lo tanto, debe cambiar el menú desplegable en el lateral. – SLaks

3

en lugar de

function display_message() { 
    alert('woohoo!'); 
} 

hacer

display_message = function() { 
    alert('woohoo!'); 
} 
+0

¿qué navegador usas? (en Google Chrome, esto está funcionando) – Keil

+0

@BenniKa: No realmente. Hará que la variable sea global y, por lo tanto, accesible para el manejador en línea. –

+0

@BenniKa: No del todo. Sin 'var' frente a' display_message = ', se convertirá en una variable global. –