Sono relativamente nuovo a JS, ma in precedenza ho programmato in C e sto cercando di capire come funziona l'evento. Sto provando a creare uno script che convaliderà l'input del modulo, tuttavia tutto il mio codice viene eseguito - tutto all'interno se/else, cicli, cosa hai - indipendentemente dall'evento che si sta verificando o meno. Per testare e rendere più facile postare qui, ho scritto un semplice programma che ha anche questo problema.Javascript: le funzioni vengono richiamate al caricamento della pagina invece di onclick/onsubmit
HTML:
<button id="test">Test</button>
Javascript:
function init(){
document.getElementById("test").onclick = alert("hello");
}
window.onload = init;
Da quello che ho capito, la funzione init dovrebbe essere chiamato al caricamento della pagina (window.onload), e l'avviso dovrebbero pop-up quando il pulsante con l'ID "test" viene cliccato (onclick). Quello che sta realmente accadendo è che l'avviso sta spuntando non appena la pagina viene caricata, e comparirà di nuovo se premo il pulsante.
Il mio pensiero è che ho fatto alcune ipotesi errate sull'ordine in cui viene eseguito JS, ma non riesco a pensare a cosa sia. Qualcuno è in grado di far luce su questo?
In altre parole: 'x = alert()' significa: 'x' è il valore restituito della statistica' alert() '. E qual è il valore restituito? Facciamolo per scoprirlo - ed è qui che avviene l'esecuzione! – Xufox
Grazie per la risposta! Questo ha senso, in realtà. Ma come potrei passare una variabile da utilizzare per la funzione innescata che voglio usare anche nella funzione genitore? O dovrei semplicemente usare una variabile globale? –
Dovresti inserire la funzione stessa chiamata in una funzione, ad esempio: 'onclick = function() {myFunction (myVariable); }; 'che avrà lo stesso scopo – mattytommo