对不起抽象的标题,但我不知道如何更好地解释我在这里处理的内容。所以基本上我想创建一个在另一个方法中添加eventlistener时使用的方法。
playerShips(obj) {
let shipCounter = this.createCounter(obj.container);
obj.element.addEventListener("click", this.addShipsEvent({
counter: obj.counter,
shipCounter: shipCounter
}));
}
addShipsEvent(event, obj) {
if ( event.target.getAttribute("class") === "cell" ) {
event.target.classList.add("active");
obj.counter += 1;
} else {
event.target.classList.remove("active");
obj.counter -= 1;
}
}
当我运行它时,我收到以下错误:TypeError:无法读取属性' getAttribute'未定义的,这是对if ( event.target.getAttribute("class") === "cell" )
我做错了什么?
答案 0 :(得分:0)
问题主要是因为“addEventListener”期望一个事件监听器作为第二个参数,但你只是执行“addShipsEvent”而不返回任何东西。 解决方案是简单地返回一个闭包。
addShipsEvent(obj) {
return function(event) {
if ( event.target.getAttribute("class") === "cell" ) {
event.target.classList.add("active");
obj.counter += 1;
} else {
event.target.classList.remove("active");
obj.counter -= 1;
}
};
}
我希望这会对你有所帮助。