亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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條經驗 獲得超22個贊

在html中定義的onclick的值是字符串,而onclick瀏覽器會嘗試把它當函數,于是會使用類似eval的方式去執行這段字符串。為啥不是指向方法就是因為從字符串是沒法得到同名函數的,除非你知道函數屬于哪個對象,然后通過中括號的方式得到函數。所以html里面不能寫成函數名的字符串。

而js中你用ele.onclick = showMsg();這個的含義是把showMsg()的調用值賦值給onclick,得到的結果當然不和預期,onclick的值只能是函數或可執行的代碼。


查看完整回答
反對 回復 2018-11-08
  • 1 回答
  • 0 關注
  • 555 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號