сравнивая сегодняшнюю дату и дату ввода в JavaScript - PullRequest
0 голосов
/ 17 мая 2019

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

<script>
  let month  = [];
  let day   = [];
  let year = [];

  let monthInput  = document.getElementById("month");
  let dayInput   = document.getElementById("day");
  let yearInput = document.getElementById("year");

  let messageBox  = document.getElementById("display");

  function insert ( ) {
  month.push( monthInput.value );
  day.push( dayInput.value );
  year.push( yearInput.value );
  celebrate();
  }

  function  celebrate() {

  // Show output
   messageBox.innerHTML = "";

    let q = new Date();
    let m = q.getMonth();
    let d = q.getDay();
    let date = new Date(m, d);
  //compares dates
    if( m == month && d == day ){
      messageBox.innerHTML = `Happy Birthday!`;
    }else{
      console.log(date);
      messageBox.innerHTML += `Your birthday is ${month}/${day}`;
    }
  }
</script>

Я получил только вывод оператора else.

1 Ответ

0 голосов
/ 17 мая 2019

Имейте в виду, что getDay возвращает день недели (5 = пятница) и что getMonth основано на 0, поэтому май равен 4 вместо 5.

Итак, если вы хотитесравнив месяцы и дни со значениями, которые вводит пользователь, вы должны использовать date.getMonth() + 1 как месяц и date.getDate() как день.

Если вы хотите использовать значение ввода, просто используйте свойство value.например, document.getElementById("month").value

Короче говоря:

var d = new Date();
if (
  Number(document.getElementById("month").value) === (d.getMonth() + 1) &&
  Number(document.getElementById("day").value) === d.getDate()
) {}
...