2 回答

TA貢獻1820條經驗 獲得超2個贊
你的主要問題是你把this你的函數參數放在里面,因此重新定義this. 只需將其更改為其他內容,這樣當您真正的意思this是this.
該事件將在回調中onclick傳遞給您。event要訪問實際元素,您需要使用event.target
例子:
class Collection {
createElements() {
let deleteSong = document.createElement('button');
deleteSong.className += 'delete-song';
deleteSong.setAttribute('type', 'button');
deleteSong.onclick = (e) => { // <- dont use 'this' here.
this.removeWidget(e.target) // e.target is the html element
}
deleteSong.innerHTML = '✕';
document.getElementById('container').append(deleteSong); // append element
}
removeWidget(el) {
console.log(el);
}
}
const c = new Collection();
c.createElements();
<div id="container"></div>

TA貢獻1786條經驗 獲得超11個贊
只需將event作為參數而不是this關鍵字傳遞。像這樣的東西會給你所需的元素。
HTML:
<button onclick="myFunction(event)">Click me</button>
JS/TS文件
deleteSong.onclick = (event)=>{ this.removeWidget(event.target) }
添加回答
舉報