我添加onclick
功能的代码如下newbutton.onclick = whoWon(this.id)
其他相关守则
var winner;
function whoWon(name){
winner = name
}
我的问题是当我尝试分配它时onclick执行并且没有添加onclick。我知道这一点,因为当我创建新按钮时,变量获胜者始终是创建的最新按钮。此外,当我检查谷歌浏览器中的元素时,唯一分配的是ID和类。
答案 0 :(得分:2)
newbutton.onclick = whoWon(this.id)
实际上会调用whoWon
函数。
您需要按原样传递whoWon
,而不调用它并将其绑定到this.id
。这应该可以解决问题:
newbutton.onclick = whoWon.bind(null, this.id)
或者如@styfle在评论中所提到的,你可以创建一个匿名函数:
newbutton.onclick = () => whoWon(this.id)
答案 1 :(得分:1)
您的代码newbutton.onclick = whoWon(this.id)
会执行whoWom(this.id)
并将其结果(在这种情况下为undefined
)分配给newbutton.onclick
。
你真正应该使用的是:
newbutton.addEventListener('click', whoWon);
从那里,您可以使用this.id
event.target.id