錯誤代碼
obj.addEventListener("onchange", makeR(obj), false);
兩個錯誤
- 事件名稱應為
"change",而非 "onchange"(on 前綴僅用於 HTML 屬性 onchange="...")。
- 第二個參數需為函數參考,
makeR(obj) 會立即執行並傳回 undefined,應包裝為匿名函數:function(){ makeR(obj); } 或箭頭函數 () => makeR(obj)。
正確寫法
obj.addEventListener("change", function(){ makeR(obj); }, false);
// 或
obj.addEventListener("change", () => makeR(obj), false);
補充
- 若需移除監聽器,須保存函數參考:
const handler = () => makeR(obj); obj.addEventListener("change", handler); obj.removeEventListener("change", handler);
- IE8 及以下不支援
addEventListener,需用 attachEvent("onchange", handler)。