2012-05-08 23 views
7

Ho realizzato questo breve violino: http://jsfiddle.net/NZnN2/. Perché non viene visualizzato l'avviso quando faccio clic sul pulsante?Funzione JavaScript non chiamata in "fiddle"

+1

Come @Rocket ha sottolineato, è necessario impostare 'no wrap' invece di 'onload' nella barra a sinistra . – Imp

+5

Mi sono perso. Perché questa domanda viene votata in modo così aggressivo? Potrebbe essere migliorato un po 'spiegando un po' di più su quale sia il problema, ma lui/lei ha un violino che è facile da usare e vedere il problema ...? – Beska

+5

Nessun codice nella domanda, nessuna spiegazione di ciò che è/non sta accadendo, titolo terribile. – Interrobang

risposta

11

Poiché il codice JavaScript è in un gestore onload, che significa che display_message non è globale e pertanto non accessibile dall'HTML.

Dal momento che è stato selezionato onLoad, il tuo JavaScript viene iniettato nella pagina come questa:

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

Come si può vedere, display_message è accessibile solo all'interno di quella funzione anonima. Per fare in modo che l'esempio funzioni, modificare o no wrap (body) (sul lato sinistro della pagina).

esempio di lavoro: http://jsfiddle.net/NZnN2/8/

+3

In altre parole: si tratta di un problema di ambito –

+2

... e pertanto, è necessario modificare il menu a discesa sul lato. – SLaks

3

invece di

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

fare

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

quale browser usi? (su google chrome, funziona) – Keil

+0

@BenniKa: Non proprio. Renderà la variabile globale e quindi accessibile al gestore in linea. –

+0

@BenniKa: non del tutto. Senza 'var' davanti a' display_message = ', diventerà una variabile globale. –

Problemi correlati