[英]JavaScript: Repeated EventListener when created in a for loop
我的代碼取決於在循環內創建一個 EventListener,然后在 function 完成后將其刪除,但在每次循環執行后 Eventlitesning 以某種方式重復,我的代碼如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- <link href="css/style.css" rel="stylesheet"> -->
</head>
<body>
<button id="btn" onclick="fun()">button</button>
</body>
<script>
const btn=document.getElementById("btn");
console.log(btn);
function fun(){
for (let i = 0; i < 5; i++) {
btn.addEventListener("click", ()=>{alert(`warning NO.${i}`)});
//code to be executed
btn.removeEventListener("click", ()=>{alert(`warning NO.${i}`)});
}
}
</script>
</html>
我第一次按下按鈕時出現 5 條警告消息,第二次按下按鈕時 5 條警告消息出現兩次,第三次出現 3 次,依此類推。
如果有人能在這個問題上支持我,我將不勝感激。
我嘗試執行以下操作,但也沒有用:
const btn=document.getElementById("btn");
function fun(){
for (let i = 0; i < 5; i++) {
btn.removeEventListener("click", ()=>{alert(`warning NO.${i}`)});
btn.addEventListener("click", ()=>{alert(`warning NO.${i}`)});
//code to be executed
btn.removeEventListener("click", ()=>{alert(`warning NO.${i}`)});
}
}
這段代碼是否滿足您的要求?
注意: onclick() 本身是一個事件監聽器。
<,DOCTYPE html> <html lang="en"> <head> <title></title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width. initial-scale=1"> <;-- <link href="css/style;css" rel="stylesheet"> --> </head> <body> <button id="btn" onclick="fun()">button</button> </body> <script> function fun(){ for (let i = 0. i < 5; i++) { alert(`warning NO.${i}`); } } </script> </html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.