IE8で関数を含む値でOnClick属性を設定する方法は?
-
06-07-2019 - |
質問
私の目標は、リンクの 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>
解決
そのためにsetAttributeを使用する必要はありません-このコードは動作します(IE8も同様)
<div id="something" >Hello</div>
<script type="text/javascript" >
(function() {
document.getElementById("something").onclick = function() {
alert('hello');
};
})();
</script>
他のヒント
最善の策は、jqueryやprototypeのような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!');
}
onclickを設定して、次のように関数を呼び出すこともできます。
foo.onclick = function() { callYourJSFunction(arg1, arg2); };
この方法では、引数も渡すことができます。 .....
次も使用できます。
element.addEventListener("click", function(){
// call execute function here...
}, false);
所属していません StackOverflow