慕的地8271018
2023-07-06 09:56:40
我用 javascript 創(chuàng)建了一個(gè)名為 userChat 的類,我希望能夠向 userChat 類添加一個(gè)單擊事件處理程序,以便當(dāng)我單擊 userChat 時(shí)它會向我發(fā)送我正在單擊的用戶的名稱,問題是我添加了一個(gè) addEventListener 但它不起作用,我不知道我做錯(cuò)了什么,你能幫助我嗎,非常感謝。 function updateUsers(socket){ socket.on('updateUsers',function(data){ let usuarios = document.querySelector('#usuarios'); usuarios.innerHTML=''; for(let i = 0; i < data.users.length; i++){ let us = `<div class ="userChat">` +data.users[i] +`</div>`; usuarios.innerHTML += us; let userchat = document.querySelector('.userChat'); userchat.addEventListener('click',function(){ console.log('estas tocando al usuario: '+data.users[i]); }); } }); }
2 回答
躍然一笑
TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
您正在嘗試將事件偵聽器添加到剛剛在 js 中創(chuàng)建的元素(let us = ...在本例中)。您應(yīng)該將此偵聽器添加到已在 DOM 中的該元素的父級,然后您可以檢查此點(diǎn)擊是否由您的元素觸發(fā)。換句話說,您需要將此事件“委托”給父元素(事件委托)。例如:
<parent-element>.addEventListener('click', function (e) {
if (e.target && e.target.classList.contains('userChat')) {
//do something
}
});
手掌心
TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
試試這個(gè)方法
let us = `<div class ="userChat" onclick='getUser(data.users[0])'>` +data.users[i] +`</div>`;
function getUser(user){
// user
}
添加回答
舉報(bào)
0/150
提交
取消
