coffetime=new Array();
function myFunction() {
var d = new Date(2018,1,15,11,33,30,0);
for(p=0;p<15;p++){
d.setDate(d.getDate()+1);
coffetime[p]=d;
//document.write("<br>"+d);// тут работает
}
for(p=0;p<15;p++) document.write("<br>"+coffetime[p]);
Ожидаемый результат:
Fri Feb 16 2018 11:33:30 GMT+1000
Sat Feb 17 2018 11:33:30 GMT+1000
Sun Feb 18 2018 11:33:30 GMT+1000
результат:
Fri Mar 02 2018 11:33:30 GMT+1000
Fri Mar 02 2018 11:33:30 GMT+1000
Fri Mar 02 2018 11:33:30 GMT+1000
Что я делаю не так?
d у вас одна, и каждый раз когда вы вызываете setDate, она меняется. А в массиве у вас 15 ссылок на одну и ту же дату. Вариантов это победить целая куча
var coffetime = new Array();
var d = new Date(2018,1,15,11,33,30,0);
for(var p=0; p<15; p++){
d.setDate(d.getDate()+1);
coffetime[p] = d;
}
// весь массив состоит из d
console.log(coffetime);
var d = new Date(2018,1,15,11,33,30,0);
for(var p=0; p<15; p++){
d.setDate(d.getDate()+1);
coffetime[p] =d.toString();
}
// массив состоит из строк, полученных из d в процессе изменения даты.
console.log(coffetime);
// Разные d
for(var p=0; p<15; p++){
var d = new Date(2018,1,15,11,33,30,0);
d.setDate(d.getDate() + p);
coffetime[p] =d.toString();
}
console.log(coffetime);
// Еще вариант с разными d
var d = new Date(2018,1,15,11,33,30,0);
for(var p=0; p<15; p++){
d.setDate(d.getDate()+1);
// клонируем дату
coffetime[p] = new Date(+d);
}
console.log(coffetime);
var coffetime = [];
for (var p = 1; p <=15; p++) {
var d = new Date(2018, 1, p, 11, 33, 30, 0);
coffetime[p] = d;
}
for (var p = 0; p < 15; p++)
document.write("<br>" + coffetime[p]);
Ваша ошибка в том, что вы меняете и добавляете в массив один и тот же объект!
Посмотрите на этот код, здесь каждый раз создается новый объект Date и кладется в массив coffetime.
<html>
<head>
<title>Test</title>
</head>
<body>
</body>
</html>
<script type="text/javascript">
var coffetime = new Array();
var d = new Date(2018, 1, 15, 11, 33, 30, 0);
for(var p = 0; p < 15; p++) {
d.setDate(d.getDate() + 1);
coffetime[p] = new Date(d);
//document.write("<br>"+d);// тут работает
}
for(var p = 0; p < 15; p++) {
document.write("<br>" + coffetime[p]);
}
</script>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости