首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

HTML/JS 頁面加載即彈出 Alert:事件綁定寫法錯誤導致立即執行

     編輯:程式設計疑難解答

問題代碼

<button id="but">按鈕</button>
<script>
    var but = document.getElementByid("but");
    but.onclick = demo(); // 錯誤寫法
    function demo() {
        alert("事件處理");
    }
</script>

錯誤原因

`but.onclick = demo()` 會立即執行 `demo()` 並將其返回值(undefined)賦給 `onclick`。正確寫法是賦予函數引用:`but.onclick = demo`(不加括號)。

正確寫法對比

錯誤寫法正確寫法說明
`btn.onclick = demo()``btn.onclick = demo`賦予函數引用,點擊時調用
`btn.onclick = function() { demo(); }``btn.onclick = () => demo()`匿名函數包裝,可傳參
`btn.addEventListener('click', demo())``btn.addEventListener('click', demo)`現代事件監聽推薦寫法

修正後完整代碼

<button id="but">按鈕</button>
<script>
    // 注意:getElementById 大小寫敏感
    var but = document.getElementById("but");
    but.onclick = demo; // 無括號
    function demo() {
        alert("事件處理");
    }
</script>

補充提示

  • `document.getElementByid` 拼寫錯誤,正確是 `getElementById`(I 大寫)。
  • 建議將腳本放在 `</body>` 前或使用 `DOMContentLoaded` 確保 DOM 就緒。
  • 現代開發推薦 `addEventListener`,支持多監聽器,避免覆蓋。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved