If, Else if, Else - Не выводить код "else" - PullRequest
0 голосов
/ 13 февраля 2019

При запуске кода первые две опции работают «с днем ​​рождения» и «в этом году вам исполнится ____ лет», последняя опция не будет.

Я пробовал несколько разных комбинаций кода, ничего не изменится для нижнего кода else для работы

function getAge() {
  var today = new Date();
  var nowYear = today.getFullYear();
  var nowMonth = today.getMonth();
  var nowDay = today.getDate();

  //prompt user to enter birth year
  var birth = prompt("When were you born?", "YYYY-MM-DD");

  //calculate if birth month is past present furture
  var birth = new
  Date(parseInt(birth.substring(0, 4)), parseInt(birth.substring(5, 7)) - 1, parseInt(birth.substring(8, 10)));

  var birthYear = birth.getFullYear();
  var birthMonth = birth.getMonth();
  var birthDay = birth.getDate();

  //create user string compare birth year and birth month to present date
  var compBirth = birthMonth.toString() + birthDay.toString();
  var compToday = nowMonth.toString() + nowDay.toString();

  //write evaluation
  if (compBirth == compToday) {
    document.write('Today is your Birthday! Happy Birthday!');
  } else if (compBirth < compToday) {
    document.write('You will be turning' + "&nbsp" + (nowYear - birthYear +
      "&nbsp") + 'years old later this year');
  } else {
    document.write('You have turned' + "&nbsp" + (nowYear - birthYear +
      "&nbsp") + 'years old already this year');
  }

}
getAge();

Нужны все три результата, чтобы правильно зарегистрировать вывод

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Ваш код работает нормально, если ввод пуст и вы нажимаете Ok.Он не работает только при нажатии кнопки «Отмена», поскольку «Отмена» возвращает нольДля этого вы можете добавить еще одно условие:

var birth = prompt("OK?");
else if (result === null) {
    return;
}
0 голосов
/ 13 февраля 2019

Я исправлю ваш код

  • измените расчет compBirth и compToday для сравнения его в виде чисел
  • измените условие compBirth < compToday на compBirth > compToday (кажется более логичным)

function getAge(){
  var today = new Date();
  var nowYear = today.getFullYear();
  var nowMonth = today.getMonth();
  var nowDay = today.getDate();

  //prompt user to enter birth year
  var birth = prompt("When were you born?", "YYYY-MM-DD");

  //calculate if birth month is past present furture
  var birth = new  Date(parseInt(birth.substring(0,4)),parseInt(birth.substring(5,7))-1,parseInt(birth.substring(8,10)));

  var birthYear = birth.getFullYear();
  var birthMonth = birth.getMonth();
  var birthDay = birth.getDate();

  //create user string compare birth year and birth month to present date
  var compBirth = birthMonth*100 + birthDay;
  var compToday = nowMonth*100 + nowDay;

  //write evaluation
  if( compBirth == compToday) {
    document.write('Today is your Birthday! Happy Birthday!');
  } else if ( compBirth > compToday){
    document.write('You will be turning'+ "&nbsp" + (nowYear - birthYear 
   + "&nbsp") + 'years old later this year');
  }
  else {
    document.write('You have turned' + "&nbsp" + (nowYear - birthYear + 
   "&nbsp") + 'years old already this year');
  }

}
  getAge();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...