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

js 注册事件机制问题

js 注册事件机制问题

慕尼黑5688855 2018-10-10 13:10:08
js 注册事件机制问题不是很明白为啥在在 html 中调用 onclick 方法时, 需要写成 onclick="showMsg()", 而不是 onclick="showMsg"在 js 中调用 onclick 时, 需写成 msg2.onclick = showMsg, 而不是 msg2.onclick = showMsg()源码:  <div id="row">     <!--right-->     <p id="msg1" onclick="showMsg()">click me</p>          <!--error-->     <!--<p id="msg1" onclick="showMsg">click me</p>-->     <p id="msg2">click me too</p>   </div>js:    var row = document.getElementById('row');    var msg1 = document.getElementById('msg1')        var msg2 = document.getElementById('msg2')         // right     msg2.onclick = showMsg         // error     msg2.onclick = showMsg()        function showMsg (e) {     if (e && e.target) {      console.log(e.target)      } else {       console.log('click msg1');      }    }
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

在html中定义的onclick的值是字符串,而onclick浏览器会尝试把它当函数,于是会使用类似eval的方式去执行这段字符串。为啥不是指向方法就是因为从字符串是没法得到同名函数的,除非你知道函数属于哪个对象,然后通过中括号的方式得到函数。所以html里面不能写成函数名的字符串。

而js中你用ele.onclick = showMsg();这个的含义是把showMsg()的调用值赋值给onclick,得到的结果当然不和预期,onclick的值只能是函数或可执行的代码。


查看完整回答
反对 回复 2018-11-08
  • 1 回答
  • 0 关注
  • 545 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号