¿Cómo establecer el atributo OnClick con un valor que contiene la función en ie8?
-
06-07-2019 - |
Pregunta
Mi objetivo es cambiar el atributo onclick
de un enlace. Puedo hacerlo con éxito, pero el enlace resultante no funciona en ie8. Funciona en ff3.
Por ejemplo, esto funciona en Firefox 3, pero no en IE8. ¿Por qué?
<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>
Solución
No necesita usar setAttribute para eso: este código funciona (también IE8)
<div id="something" >Hello</div>
<script type="text/javascript" >
(function() {
document.getElementById("something").onclick = function() {
alert('hello');
};
})();
</script>
Otros consejos
su mejor opción es usar un framework javascript como jquery o prototype, pero, en su defecto, debe usar:
if (foo.addEventListener)
foo.addEventListener('click',doit,false); //everything else
else if (foo.attachEvent)
foo.attachEvent('onclick',doit); //IE only
editar:
también, su función está un poco apagada. debería ser
var doit = function(){
alert('hello world!');
}
También puede configurar onclick para llamar a su función de esta manera:
foo.onclick = function() { callYourJSFunction(arg1, arg2); };
De esta manera, también puedes pasar argumentos. .....
También puedes usar:
element.addEventListener("click", function(){
// call execute function here...
}, false);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow