我对闭包感到困惑
<script type="text/javascript">
$(function () {
for (var i = 0; i < 7; i++) {
var cname = '#closingTimePicker' + i;
$(cname).datetimepicker({
format: 'LT'
});
var oname = '#openingTimePicker' + i;
$(oname).datetimepicker({
format: 'LT'
});
$(oname).on("dp.change", function (e) {
$(cname).data("DateTimePicker").minDate(e.date);
});
$(cname).on("dp.change", function (e) {
$(oname).data("DateTimePicker").maxDate(e.date);
//Loop issue here
});
}
});
</script>
&GT;
在上面的脚本中,我很困惑如何应用闭包,以便我根据循环得到正确的日期选择器。任何建议和重要的解释都会有很大的帮助。
谢谢,
答案 0 :(得分:0)
每个循环cname和oname都会获得一个新值。因此,当触发oname对象的dp.change时,cname始终是它在循环中获得的最后一个值。
尝试这样的事情:
<script type="text/javascript">
function initPicker(cname, oname)
{
// paste here the rest of the loop
}
for (var i = 0; i < 7; i++) {
var cname = '#closingTimePicker' + i;
var oname = '#openingTimePicker' + i;
initPicker(cname, oname);
}
</script>
[编辑] 简短说明: 范围与其变量一样长。所以“范围”initPicker用不同的填充变量初始化7次。 [/编辑]
享受( - :