web-dev-qa-db-fra.com

Comment définir l'attribut OnClick avec la valeur contenant la fonction dans ie8?

Mon objectif est de changer l'attribut onclick d'un lien. Je peux le faire avec succès, mais le lien résultant ne fonctionne pas dans ie8. Cela fonctionne dans ff3.

Par exemple, cela fonctionne dans Firefox 3, mais pas dans IE8. Pourquoi?

<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>
32
edt

Vous n'avez pas besoin d'utiliser setAttribute pour cela - Ce code fonctionne (IE8 également)

<div id="something" >Hello</div>
<script type="text/javascript" >
    (function() {
        document.getElementById("something").onclick = function() { 
            alert('hello'); 
        };
    })();
</script>
61
Hugoware

votre meilleur pari est d'utiliser un framework javascript comme jquery ou prototype, mais, à défaut, vous devez utiliser:

if (foo.addEventListener) 
    foo.addEventListener('click',doit,false); //everything else    
else if (foo.attachEvent)
    foo.attachEvent('onclick',doit);  //IE only

modifier:

aussi, votre fonction est un peu décalée. CA devrait etre

var doit = function(){
    alert('hello world!');
}
9
Jonathan Fingland

Vous pouvez également définir onclick pour appeler votre fonction comme ceci:

foo.onclick = function() { callYourJSFunction(arg1, arg2); };

De cette façon, vous pouvez également passer des arguments. .....

7
small wonder

Vous pouvez également utiliser:

element.addEventListener("click", function(){
    // call execute function here...
}, false);
1
Quang Le