Per legare entrambe le risposte molto-corrette insieme, quello che è successo è che hai inline una funzione in cui hai scritto onclick="return runFunction();"
Se si guarda a questo, quello che sta facendo veramente sta andando in questo modo:
var link = document.getElementById("myLink");
link.onclick = function() { runFunction(); };
Vedere il problema?
Il mio runFunction
viene chiamato senza alcun oggetto evento inoltrato, a tutti. ... il che significa che var thisLink = (evt) ?
restituirà false, il che significa che tenterà di eseguire in modalità oldIE.
Scrivendo onclick="runFunction"
, che è lo stesso che dire:
link.onclick = runFunction;
Il che significa che quando l'evento onclick accade, runFunction sarà chiamato, e nei browser W3C-compliant, verrà inviato un oggetto evento.
Ecco perché la soluzione funziona.
Il modo migliore per evitare un sacco di questa confusione è trattare JavaScript all'interno di JavaScript e gestire HTML all'interno di HTML, in modo da non doversi preoccupare di come le stringhe si traducono in codice.
Ora, per ottenere tutto questo per lavorare, e prevenire il reindirizzamento, si vuole fare questo:
per i browser W3C (quelli che passano il parametro dell'evento):
function runFunction (evt) {
// stops the default-action from happening
// means you need to find another way to fire it, if you want to later
evt.preventDefault();
// stops higher-up elements from hearing about the event
// like if you stop a submit button from "clicking", that doesn't stop the form
// from submitting
evt.stopPropagation();
//the oldIE versions of both of these are
event.cancelBubble = true;
event.returnValue = false;
}
Questo significa che nessun caso è passato alla funzione. Grazie. – Vicky