做...虽然提前2个月停止?

时间:2010-12-08 12:49:54

标签: javascript

var date = new Date(); 
do {
    var sel = date.toString();
    document.write(sel + "<br>");
    date.setDate(date.getDate()+1);
   } while(date.getDate() != 2 && date.getMonth() != 2)

为什么这会在1月1日停止......?

6 个答案:

答案 0 :(得分:3)

因为在1月2日,第一个条件返回false并且执行停止。我假设您希望脚本一直持续到2月2日,在这种情况下,您的条件应如下所示:

} while(date.getDate() != 2 || date.getMonth() != 1)
// Stops when day is 2 and month is 1 (February)

或者:

} while(!(date.getDate() == 2 && date.getMonth() != 1))

两者意味着同样的事情。请注意,月份为零索引,因此二月份为1.这会产生如下输出:

...
Fri Jan 28 2011 14:57:00 GMT+0200
Sat Jan 29 2011 14:57:00 GMT+0200
Sun Jan 30 2011 14:57:00 GMT+0200
Mon Jan 31 2011 14:57:00 GMT+0200
Tue Feb 01 2011 14:57:00 GMT+0200
  

http://jsfiddle.net/MF7bR/

答案 1 :(得分:2)

检查http://jsfiddle.net/PYXeu/

1月1日有getDate == 2.

修改:如果您希望这样,请转到2.02查看http://jsfiddle.net/PYXeu/1/中的代码

答案 2 :(得分:1)

因为在第二次迭代中.getDate是2.而while不能执行。如果您希望它在完成2后停止,则需要将其增加到3。

如果您在代码中更明确地说明您要添加到日期中的内容,也不会有任何损失。

答案 3 :(得分:0)

当您点击3月或2月时,您的循环将不再执行。这是因为月份从0开始,所以1月是0,12月是11。

答案 4 :(得分:0)

在javascript中,月份从1月份的索引0开始。您需要根据需要相应地调整循环。

答案 5 :(得分:0)

我相信月份从0开始,所以在1月1日date.getMonth()== 0,其中!= 2.