Comment définir l'attribut OnClick avec la valeur contenant la fonction dans ie8?
-
06-07-2019 - |
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>
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);