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>
¿Fue útil?

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