使用onclick时,变量值在coffeescript中不会改变

时间:2013-02-22 01:37:24

标签: variables onclick coffeescript

我有以下Coffeescript代码:

for name, data of statistics
    row = document.createElement 'tr'
    row.onclick = ->
        alert name

但是,当我编译并运行它(在大型网页的上下文中)时,无论我点击哪一行,它都会提醒相同的名称。它似乎记住了变量,好像它是不变的。

我做错了什么?

编辑:

我发现了这个问题,但我不确定如何修复它:Javascript / Coffeescript在达到循环结束之前不评估'name'变量。

1 个答案:

答案 0 :(得分:1)

您定义的函数(以及分配给行的onclick属性)都可以访问该函数(name)之外的相同变量。在循环结束时,name有一个值(循环中的最后一项,如你所提到的),因此每个onclick函数都会提醒该值。

您可以通过将“name”绑定到不会更改的值来解决此问题。 This question提出了一个解决方案。 This question有一些值得阅读的有用背景。