Come impostare l'attributo OnClick con valore contenente la funzione in ie8?
-
06-07-2019 - |
Domanda
Il mio obiettivo è cambiare l'attributo onclick
di un link. Posso farlo con successo, ma il link risultante non funziona in ie8. Funziona in ff3.
Ad esempio, funziona con Firefox 3, ma non con IE8. Perché?
<p><a id="bar" href="#" onclick="temp()">click me</a></p>
<script>
doIt = function() {
alert('hello world!');
}
foo = document.getElementById("bar");
foo.setAttribute("onclick","javascript:doIt();");
</script>
Soluzione
Non è necessario utilizzare setAttribute per questo - Questo codice funziona (anche IE8)
<div id="something" >Hello</div>
<script type="text/javascript" >
(function() {
document.getElementById("something").onclick = function() {
alert('hello');
};
})();
</script>
Altri suggerimenti
la tua migliore scommessa è usare un framework javascript come jquery o prototipo, ma, in mancanza, dovresti usare:
if (foo.addEventListener)
foo.addEventListener('click',doit,false); //everything else
else if (foo.attachEvent)
foo.attachEvent('onclick',doit); //IE only
modifica:
inoltre, la tua funzione è un po 'fuori. dovrebbe essere
var doit = function(){
alert('hello world!');
}
Puoi anche impostare onclick per chiamare la tua funzione in questo modo:
foo.onclick = function() { callYourJSFunction(arg1, arg2); };
In questo modo, puoi anche passare argomenti. .....
Puoi anche usare:
element.addEventListener("click", function(){
// call execute function here...
}, false);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow