为了账号安全,请及时绑定邮箱和手机立即绑定

为什么给button的onclick属性赋值已经定义好的函数会不行呢

<body>
 <input type="button" value="按钮" id="btn">
 <script>
 function showM()
 {
     alert('Hello');
  }
  var btn=document.getElementById("btn");
  btn.onclick=showM();
 </script>
 <body>


正在回答

2 回答

btn.onclick=showM();去掉括号,不然就变成传函数返回值了

3 回复 有任何疑惑可以回复我~
#1

栄篱 提问者

可以详细的解说一下函数的返回值吗
2016-03-05 回复 有任何疑惑可以回复我~
#2

Harvie 回复 栄篱 提问者

这里 showM 是 showM() 这个函数的一个别名,它指向了 showM() 函数存放的地方。如果写成 btn.onclick = showM; 就相当于告诉编译器触发 click 事件时在 showM 指向的地方去执行这个函数;而加了括号后就表示执行该函数,这样 btn.onclick = showM(); 表示的就是 btn.onclick 等于 showM() 的返回值,当然这里我们并没有显式的用return来返回一个值,测试了一下默认返回值是undefined,所以 btn.onclick=showM(); 就相当于 btn.onclick=undefined;
2016-03-05 回复 有任何疑惑可以回复我~
#3

栄篱 提问者 回复 Harvie

万分感谢,get到了
2016-03-05 回复 有任何疑惑可以回复我~
#4

Original121 回复 Harvie

btn2.onclick="showMe()";请问这样为什么不行呢?
2016-05-03 回复 有任何疑惑可以回复我~
查看1条回复

下面的body标签错了 </body>

0 回复 有任何疑惑可以回复我~
#1

栄篱 提问者

不好意思,其实这body标签在我编辑器了是对的,主要问题不在那,楼上那位已经解说了,谢谢
2016-03-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么给button的onclick属性赋值已经定义好的函数会不行呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信