0
<!doctype html>
<html>

<body>
<div id = 'div' style = 'width:100px;height:100px;background:#000000;'></div>
<script type = 'text/javascript'>
document.getElementById('div').addEventListener('click',happen(),true);
function happen()
{
    alert(1)
}
</script>
</body>
</html>

上記のコードでは、ページが読み込まれたときにイベントがトリガーされ、div をクリックしたときにトリガーされないのはなぜですか...また、正しいイベント名のクリックまたはオンクリックです....

4

6 に答える 6

3

他の関数呼び出しと同様に、関数をすぐに呼び出して、その戻り値を に渡します。 を取り出します。addEventListener
()

于 2012-01-26T17:54:11.980 に答える
3

これは、関数をすぐに呼び出して、null の結果を に渡したためaddEventListener()です。

そのはず:

document.getElementById('div').addEventListener('click',happen,true);

に引数を渡したい場合はhappen、次のように記述する必要があります。

document.getElementById('div').addEventListener('click', function() {
    happen(args_here, ...); 
}, true);
于 2012-01-26T17:54:32.320 に答える
2

これはうまくいくはずです:

document.getElementById('div').addEventListener('click',happen,true);
于 2012-01-26T17:54:23.833 に答える
2

問題は次の行にあります。

document.getElementById('div').addEventListener('click',happen(),true);

関数の名前のみを渡す必要がありhappenますが、括弧を追加したため、結果を渡しています。

代わりにこれを試してください:

document.getElementById('div').addEventListener('click',happen,true);
于 2012-01-26T17:54:36.037 に答える
0

他の回答者が言ったように、 () を取り除くと問題が解決します。

別の方法として、オブジェクト指向 Javascript の優れた方法としてfunction(){ }、次のように関数を a 内にラップする方法があります。

document.getElementById('div').addEventListener('click',function(){happen()},true);

コールバックをオブジェクト内で実行する必要がある場合は、スコープが保持されます (この場合はそうではありません)。

于 2012-01-26T18:00:10.787 に答える
0

イベント ハンドラに括弧は必要ありません

 document.getElementById('div1').addEventListener('click',happen,true);
于 2012-01-26T18:00:20.270 に答える