Pergunta

Meu objetivo é mudar o onclick atributo de um link. Eu posso fazer isso com sucesso, mas o link resultante não funciona no IE8. Funciona no FF3.

Por exemplo, isso funciona no Firefox 3, mas não no 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>
Foi útil?

Solução

Você não precisa usar o SetAttribute para isso - este código funciona (IE8 também)

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

Outras dicas

Sua melhor aposta é usar uma estrutura JavaScript como jQuery ou protótipo, mas, não, você deve usar:

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

editar:

Além disso, sua função está um pouco fora. deveria ser

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

Você também pode definir o OnClick para chamar sua função assim:

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

Dessa forma, você também pode passar argumentos. .....

Você também pode usar:

element.addEventListener("click", function(){
    // call execute function here...
}, false);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top