Question

Mon objectif est de modifier 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>
Était-ce utile?

La solution

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>

Autres conseils

votre meilleur pari est d'utiliser un framework javascript comme jquery ou un 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 éteinte. il devrait être

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

Vous pouvez également configurer onclick pour appeler votre fonction comme suit:

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

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

Vous pouvez également utiliser:

element.addEventListener("click", function(){
    // call execute function here...
}, false);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top