在for循环中动态创建onclick事件 - 所有onclick事件都使用for循环列表中的最后一个元素

时间:2010-07-27 03:09:34

标签: dojo

我有一个循环遍历消息列表的for循环。我正在尝试为每个具有onclick函数的消息创建一个链接,该函数将一些消息属性传递给弹出窗口:

for (var k = 0; k < messages.length; k++) {
                var message = messages[k];
                var lnkMessage = dojo.create("a", { innerHTML: FormatLogMessage(message.Message), className: "pointer", title: "View Message Info" }, divMessageBody);
                //lnkMessage.href = "javascript:ShowLogPopup('" + message.LogTimeFormatted + "', '" + message.Message + "')";
                dojo.connect(lnkMessage, 'onclick', this,
                    function() { this.ShowLogPopup(message.LogTimeFormatted, message.Message); }
                );
            }

问题是在dojo.connect中使用此方法时,ShowLogPopup消息弹出窗口始终会从列表中的最后一条消息传递属性。关于如何让它通过适当的属性的任何想法?

1 个答案:

答案 0 :(得分:1)

尝试使用dojo.hitch()代替您的功能:

dojo.connect(lnkMessage, 'onclick', this,
     dojo.hitch(this,"ShowLogPopup",message.LogTimeFormatted, message.Message)
            );