为什么以下代码为" document.getElementById(id).onclick = [..]"显示相同的结果

时间:2017-05-07 19:38:35

标签: javascript

请解释为什么评论中的实际代码和代码显示完全相同的结果



<p>Click button to display date</p>
<button type="button" id="button">Click</button>
<p id="paragraph"></p>

<script>
function display() {
var d = new Date();
document.getElementById("paragraph").innerHTML=d;
}
document.getElementById("button").onclick=display;
/* Why does above line shows same results shown by:-
document.getElementById("button").onclick=function() { display(); };
*/
</script>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

在一种情况下,当您点击该按钮时,请拨打display

另一方面,当您点击该按钮时,您调用的函数除了调用display之外什么都不做。

display函数没有注意传递给它的参数,所以事件对象没有被传递的事实并不重要。

之间没有实际区别:

display(event);

function onclick() {
    display();
}
onclick(event);

答案 1 :(得分:0)

查看MDN here

Onclick采用函数引用。您发布的两种方式之间没有区别,因为&#34;显示&#34;是一个函数引用,您输入的匿名函数也是一个函数引用。它恰好调用了它内部的显示。

答案 2 :(得分:0)

onclick想要一个函数引用。当onclick发生时,js调用传递给该项的函数。当你将“显示”传递给它时,然后调用display()。当你将“function(){...}”传递给它时,然后调用这个函数,你必须在其中调用display,而不仅仅是引用“display”,因为js只调用传递给onclick的函数,你必须调用其他功能你自己。