2017-08-16 53 views
0

我的代码添加onclick功能如下newbutton.onclick = whoWon(this.id)分配的onclick的功能问题

其他相关的代码

var winner; 

function whoWon(name){ 
    winner = name 
} 

我的问题是的onclick当我尝试为它分配执行并没有按”添加onclick。我知道这是因为当我创建新按钮时,变量赢者始终是最近创建的按钮。另外,当我检查谷歌浏览器中的元素唯一分配的是ID和类。

回答

2

newbutton.onclick = whoWon(this.id)实际上会调用whoWon函数。

您需要按原样传递whoWon,而不调用它并将其绑定为this.id。这应该做的伎俩:

newbutton.onclick = whoWon.bind(null, this.id) 

或由@styfle在评论中提到的,你可以创建一个匿名函数:

newbutton.onclick =() => whoWon(this.id) 
+0

访问this.id相当于或者你可以指定一个匿名函数'newbutton.onclick =()=> whoWon(this.id)' – styfle

+0

感谢您指出,回答编辑:) – Erazihel

+0

我已经尝试了这两个sugestions,但它仍然无法正常工作。该表中的按钮是否是一个问题? –

1

您的代码newbutton.onclick = whoWon(this.id)执行whoWom(this.id)和它的结果分配(其在这种情况下为undefined)至newbutton.onclick

你真正应该使用的是:

newbutton.addEventListener('click', whoWon); 

从那里,你可以用event.target.id