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>
È stato utile?

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
scroll top