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 に答える