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) }
添加回答
举报