Date.setDate () увеличивает дату каждый раз в функции

Когда я устанавливаю maxdate на основе текущей даты, возникает проблема.

Вот код:

var minDate = new Date();
var maxDate = new Date();

function myFunction() {
  maxDate.setDate(new Date().getDate() + 60);
  document.getElementById("demo").innerHTML = maxDate;
}
<p>Click the button to display the maxDate</p>
<button onclick = "myFunction()">Try it</button>
<p id = "demo"></p>

Каждый раз, когда я нажимаю кнопку, дата увеличивается на 60 дней.

Я хочу подтвердить его с помощью даты, введенной в поле ввода даты, моя проверка приведена ниже.

Дата, введенная во входных данных, должна быть между текущей датой и 60 днями позже текущей даты.

Output:
On click of button.
1st Click : Tue Aug 28 2018 11:36:52 GMT+0530 (India Standard Time)
2nd Click : Sun Oct 28 2018 11:36:52 GMT+0530 (India Standard Time)
3rd Click : Fri Dec 28 2018 11:36:52 GMT+0530 (India Standard Time)

Пожалуйста помоги.

Что значит увеличение на 60 дней? При каждом клике увеличивается на 60 дней? Или он показывает +60 дней с текущей даты при каждом нажатии

Aseem Upadhyay 29.06.2018 08:16
setDate изменяет объект Date на месте, поэтому maxDate увеличивается каждый раз, когда вы запускаете функцию. Никаких сюрпризов.
RobG 29.06.2018 12:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
44
1

Ответы 1

new Date().getDate() возвращает день месяца для текущей даты по местному времени - моя текущая местная дата - 29 June 2018, поэтому она возвращает 29.

Это означает, что new Date().getDate() + 60 возвращает 89.

maxDate.setDate(89) устанавливает день объекта maxDate относительно начала текущего установленного месяца.

maxDate находится в глобальной области видимости - это означает, что текущий установленный месяц в maxDate изменяется после каждого щелчка.

Попробуйте сделать maxDate локальным для вашей функции:

function myFunction() {
  let maxDate = new Date();
  maxDate.setDate(new Date().getDate() + 60);
  document.getElementById("demo").innerHTML = maxDate;
}
<p>Click the button to display the maxDate</p>
<button onclick = "myFunction()">Try it</button>
<p id = "demo"></p>

Вы также должны добавить, что newDate.getDate() возвращает в настоящее время. людей запутает число 89 или как оно появилось

Aseem Upadhyay 29.06.2018 08:29

Я думаю, что ОП уже понимает первые 3 абзаца. Четвертое может быть откровением. Может быть лучше, если myFunction принимает дату для maxDate, но по умолчанию используется текущая дата, например function myFunction(maxDate = new Date()){...}. ;-)

RobG 29.06.2018 12:50

Другие вопросы по теме