問題解決:在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
css

(本文對讀者有幫助的話請移步支持原做者)html

相關文章
相關標籤/搜索