对不起,如果这个问题看起来很愚蠢,但我已经困惑很久了。
我想在点击按钮时提醒“viola”。 下面的第二个例子没有按预期工作,因为我没有包含“function()”
直觉上我认为第二个例子应该有效,因为我已经将一个函数(allert)附加到元素(button)和eventlistener(onclick)。
因此我真的想知道包含function()的目的。感谢。
示例1
<html>
<button id="clickme">Hello,I'm a button,click me</button>
<script>
var button=document.getElementById("clickme");
clickme.onclick=function() {alert("viola");}
</script>
</html>
示例2
<html>
<button id="clickme">Hello,I'm a button,click me</button>
<script>
var button=document.getElementById("clickme");
clickme.onclick=alert("viola");
</script>
</html>
答案 0 :(得分:3)
clickme.onclick=alert("viola");
不会注册函数alert(..)
,但调用的结果就是函数。
单击按钮时,onclick
字段需要稍后执行function
。当您安装处理程序时,您不想执行该功能。
你也可以写:
clickme.onclick=myfunction;
function myfunction() { alert("viola") }
答案 1 :(得分:0)
事件监听器只能是一个函数。
alert("viola")
不是一个函数,但实际上是undefined
。那是因为
clickme.onclick=alert("viola");
表示“将alert(…)
的返回值分配给clickme.onclick
”。 <{1}}被立即称为 ,并且分配了调用它的结果。
包装器alert("viola")
实际上为函数分配了function(){…}
,然后再调用它。