我目前从javascript中的以下while循环中获得了奇怪的行为。
var i = 0;
var endDate = new Date();
var startDate = new Date();
startDate.setDate(startDate.getDate() - 6);
while (start <= end){
alert (start.getDate());
start.setDate(start.getDate() + i);
i++;
}
我期望的输出(假设今天是9月26日)将是:
20 21 22 23 24 25 26
但是我得到以下输出
20 20 21 23 26
我认为我没有正确处理startDate变量的范围,但我不确定如何解决这个问题。
非常感谢任何帮助
答案 0 :(得分:1)
你的迭代器不正确。你甚至不需要迭代器。只需将1而不是i添加到while循环的第二行,并删除var i = 0和i ++。
var endDate = new Date();
var startDate = new Date();
startDate.setDate(startDate.getDate() - 6);
while (startDate <= endData){
alert (start.getDate());
start.setDate(start.getDate() + 1);
}
你得到20 20 21 23 26的原因是因为在第一个循环中你回来了六天,并且加零;你回来六天的第二个循环,加一个;你回来五天的第三个循环加2;第四个循环你现在三天回来了,加了3个;等
答案 1 :(得分:1)
假设开始和结束是您的日期变量:
while (start <= end){
alert (start.getDate());
start.setDate(start.getDate() + i);
i++;
}
循环迭代1:日期是20,你添加0 =&gt; 20
循环迭代2:日期是20,你加1 =&gt; 21
循环迭代3:日期是21,你加上2 =&gt; 23
循环迭代4:日期为23,你添加3 =&gt; 26
为了得到你所期望的,试试这个:
while (start <= end){
alert (start.getDate());
start.setDate(start.getDate() + 1);
i++;
}
答案 2 :(得分:0)
如果您通过代码进行调试,您可能会看到循环的每次迭代都会以不同的值修改日期 - i
每次都会在循环中发生变化。首次按0
更新日期,然后按1
更新日期,然后2
等等。这是您在输出中看到的内容。
将i
替换为1
,您就可以获得预期的输出。事实上,你甚至不需要i
。