【发布时间】:2014-11-11 22:22:38
【问题描述】:
我目前遇到了一个问题,我动态地创建了一组 div,并且在创建它们时,我为它们分配了一个 onclick() 事件。代码的简化版本如下所示:
for(DayOfTheWeek = 0; DayOfTheWeek < 7; DayOfTheWeek++){
var EventCell = document.createElement('div');
var EventDayIndex = WeekNumber*7 + DayOfTheWeek + EventoDayOffset;
EventCell.onclick = function(){ClickableDivFunction(EventDayIndex)};
}
我遇到的问题是我所有的 div 集都使用计算出的最终 EventDayIndex 的参数调用 ClickableDivFunction。这是我所有的 7 个 div 都执行 ClickableDivFunction(6) 而不是我的第一个 div 执行 ClickableDivFunction(0),第二个 ClickableDivFunction(1) 等等。
在此论坛上搜索时,我发现以下answer 解释了我的问题。基本上,EventDayIndex 不会只评估并保留在为 onclick 事件定义的函数中的每次迭代中获得的值。
我尝试了几件事,例如尝试将 EventDayIndex 转换为字符串,希望 ClickableDivFunction 的参数保持其值。尝试添加另一个变量,使用“+”运算符生成一个字符串,然后向 ClickableDivFunction 添加一个过滤器以删除多余的文本(这是我试图通过执行以下操作来强制评估 EventDayIndex:
var NewVar = ClickableDivFunction + "#";
然后删除调用函数中的“#”。)在所有情况下,我得到了相同的结果。 所以我的问题是,你们建议如何以安全、可维护的方式解决这个问题?我假设人们过去会遇到过这个问题,而我只是没有足够的编程知识来知道要搜索什么,但我能想到的解决这个问题的所有方法要么是转换为文本,要么是找到一个按值进行变量赋值的方法。
如果有任何帮助或答案链接,我将不胜感激。
【问题讨论】:
-
感谢大家的帮助!
标签: javascript