我的代码添加onclick
功能如下newbutton.onclick = whoWon(this.id)
分配的onclick的功能问题
其他相关的代码
var winner;
function whoWon(name){
winner = name
}
我的问题是的onclick当我尝试为它分配执行并没有按”添加onclick。我知道这是因为当我创建新按钮时,变量赢者始终是最近创建的按钮。另外,当我检查谷歌浏览器中的元素唯一分配的是ID和类。
我的代码添加onclick
功能如下newbutton.onclick = whoWon(this.id)
分配的onclick的功能问题
其他相关的代码
var winner;
function whoWon(name){
winner = name
}
我的问题是的onclick当我尝试为它分配执行并没有按”添加onclick。我知道这是因为当我创建新按钮时,变量赢者始终是最近创建的按钮。另外,当我检查谷歌浏览器中的元素唯一分配的是ID和类。
newbutton.onclick = whoWon(this.id)
实际上会调用whoWon
函数。
您需要按原样传递whoWon
,而不调用它并将其绑定为this.id
。这应该做的伎俩:
newbutton.onclick = whoWon.bind(null, this.id)
或由@styfle在评论中提到的,你可以创建一个匿名函数:
newbutton.onclick =() => whoWon(this.id)
您的代码newbutton.onclick = whoWon(this.id)
执行whoWom(this.id)
和它的结果分配(其在这种情况下为undefined
)至newbutton.onclick
。
你真正应该使用的是:
newbutton.addEventListener('click', whoWon);
从那里,你可以用event.target.id
访问
this.id
相当于或者你可以指定一个匿名函数'newbutton.onclick =()=> whoWon(this.id)' – styfle感谢您指出,回答编辑:) – Erazihel
我已经尝试了这两个sugestions,但它仍然无法正常工作。该表中的按钮是否是一个问题? –