32

我的目标是更改onclick链接的属性。我可以成功,但生成的链接在 ie8 中不起作用。它确实适用于ff3。

例如,这适用于 Firefox 3,但不适用于 IE8。为什么?

<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>
4

4 回答 4

65

您不需要为此使用 setAttribute - 此代码有效(IE8 也是)

<div id="something" >Hello</div>
<script type="text/javascript" >
    (function() {
        document.getElementById("something").onclick = function() { 
            alert('hello'); 
        };
    })();
</script>
于 2009-06-19T17:26:20.430 回答
9

你最好的选择是使用像 jquery 或原型这样的 javascript 框架,但是,如果失败了,你应该使用:

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

编辑:

另外,你的功能有点偏离。它应该是

var doit = function(){
    alert('hello world!');
}
于 2009-06-19T17:24:48.433 回答
6

您还可以设置 onclick 来调用您的函数,如下所示:

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

这样,您也可以传递参数。......

于 2013-09-21T00:49:18.217 回答
1

您还可以使用:

element.addEventListener("click", function(){
    // call execute function here...
}, false);
于 2014-02-27T07:10:46.880 回答