为什么onclick fire next next函数没有分配给它?

tik*_*ika 2 javascript jquery events event-handling javascript-events

为什么单击按钮会触发警报?它被分配给段落,而不是按钮.HTML:

<button onclick="foo()">Click me</button>
<p id="hidden" style="display:none"> I was hidden </p>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

function foo(){
    document.getElementById("hidden").style.display = "block";
    document.getElementById("hidden").onclick = innnerClick(); 
}
function innnerClick(){
    alert("Ouch! That hurt!")
}
Run Code Online (Sandbox Code Playgroud)

Vis*_*ioN 8

因为这条线:

// ----------------------------------------------------vv
document.getElementById("hidden").onclick = innnerClick();
Run Code Online (Sandbox Code Playgroud)

在这里你innnerClick立即调用该函数.

只需删除()after即可将引用传递给函数而不是调用它,即

document.getElementById("hidden").onclick = innnerClick;
Run Code Online (Sandbox Code Playgroud)