为什么点击该按钮会触发警报?它被分配给段落,而不是按钮。 HTML:
<button onclick="foo()">Click me</button>
<p id="hidden" style="display:none"> I was hidden </p>
使用Javascript:
function foo(){
document.getElementById("hidden").style.display = "block";
document.getElementById("hidden").onclick = innnerClick();
}
function innnerClick(){
alert("Ouch! That hurt!")
}
答案 0 :(得分:8)
由于这一行:
// ----------------------------------------------------vv
document.getElementById("hidden").onclick = innnerClick();
您可以立即调用innnerClick
函数。
只需删除()
之后传递对函数的引用而不是调用它,即
document.getElementById("hidden").onclick = innnerClick;
答案 1 :(得分:3)
因为,您需要添加函数的引用,如下所示:
function foo(){
document.getElementById("hidden").style.display = "block";
document.getElementById("hidden").onclick = innnerClick;
}
没有直接打电话。
在jQuery中,我们可以重现相同的问题,如:
$('button').click(function () {
$('#hidden').show();
$('#hidden').click(innnerClick()); <-- see the function with () here
});
问题在这里是一样的,我们只需要将函数引用传递给click处理程序,如: -
$('#hidden').click(innnerClick);