2012-04-27 12 views
2
<p id="specialp">some content</p> 
<script> 
document.getElementById('specialp').onclick=alert('clicked'); 
</script> 

私はJavaScriptを使い始めました。ページが読み込まれたときに警告が表示される理由はわかりませんが、その段落をクリックしたときは表示されません。onclickイベント - JavaScriptがonloadを実行する理由

私はインラインそれを置くとき、期待どおりハンドラは次のように、作品:

<p id="specialp" onclick="alert('clicked')" >some content</p> 

答えて

4

あなたは、実際の関数としてonclick割り当てを包むdidntのためですので、alert('clicked')の結果を代入しようとしますonclickイベントハンドラ(割り当てられている場合はおそらくundefinedを意味します)。何をする必要があるので、同様にそのハンドラに機能を割り当てるです:

document.getElementById('specialp').onclick = function() 
{ 
    alert('clicked'); 
}; 

あなたがHTMLで同じことを行うと、DOMが自動的にあなたのための機能でそのコンテンツをラップします。

+0

alert()関数自体はありませんか?これは、何らかの形でalert()がtrueを返すと、このアプローチがうまくいくことを意味しますか? さらに、ページが読み込まれた後になぜ実行されるのですか? – Atheus

+0

'alert'は関数ですが、あなたはその関数を代入していないので、onclickオブジェクトに式' alert( 'clicked')を代入しています。式は代入の一部として評価されます。あなたがしたことは、技術的には 'var x = 4 + 2'と変わりありません。スクリプトは読み込み時に実行され、 'x'に6を割り当てます。後で' x'を使用するときには割り当てません。 – Tejs

+0

関数内の要素の属性を使いたい場合、その関数への引数にオブジェクトを渡すにはどうすればいいでしょうか?私はページのすべての要素にこれを使用しているので、getElementById()関数を使用することはできません。 – Atheus

関連する問題