问题解决:在js中绑定onclick事件为什么不加括号,在html代码中必须要加?(转载)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> <button id="btn">按钮</button> </div> <script> var btn = document.getElementById("btn"); btn.onclick = demo(); //btn.onclick = demo; /*加上括号是执行的意思,添加事件的回调函数应该就是给相应的事件属性赋值, 而很明显需要把一个函数赋值给这个事件属性,而不是函数的调用结果。 所以在js中的绑定是直接赋值。而在标签内的事件属性的值是由引号包裹的, 代表的是当点击该元素时,执行引号内的代码,直接把引号内的代码拿出来跑, 如果你不加括号,那就不会调用那个函数。*/ /*简单来说就是带括号的是执行一次函数,不带括号的函数就是一个函数对象*/ /*那下面这种意思就明显了,下面的这一句语句是将一个函数对象赋值给了btn.onclick
*/ // btn.onclick = function(){alert("DOM0级事件处理111");} function demo(){ alert("111"); } </script> </body> </html>
搬运转载自回答:https://www.imooc.com/wenda/detail/323633
(本文对读者有帮助的话请移步支持原作者)