分配onclick到功能问题

时间:2017-08-16 15:32:52

标签: javascript html function button onclick

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

其他相关守则

var winner;

function whoWon(name){
   winner = name
}

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

2 个答案:

答案 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