Вложенное IF-выражение не работает так, как я хочу - PullRequest
0 голосов
/ 16 ноября 2018
var dayInput = document.querySelector("#day");
var monthInput = document.querySelector("#month");
var yearInput = document.querySelector("#year");
var day = document.querySelector("h2");
var h3 = document.querySelector("h3");

function runCode() {
dayPicked = Number(dayInput.value);
monthPicked = Number(monthInput.value);
yearPicked = Number(yearInput.value);
if (dayPicked <= 31) {
    if (monthPicked <= 12) {
        if ((monthPicked = 2) && (dayPicked <= 29)) {
            day.textContent = (DispDay(dayPicked, monthPicked, yearPicked));
            h3.textContent = (DispFullDate(dayPicked, monthPicked, 
yearPicked));
        } else { day.textContent = "Not Possible Dude!"}
    } else { day.textContent = "Not Possible Dude!"}
} else { day.textContent = "Not Possible Dude!"}
}

Это фрагмент моего кода, в котором я пытаюсь ограничить поиск дат в своих полях ввода. Например, если выбран февраль, а день - 30-й, это должно привести к ошибке. Но все, что происходит с кодом, который вы видите выше, не имеет значения, какой месяц я выберу, он продолжает возвращаться в феврале. Я знаю, что определенно делаю что-то не так, но я не знаю, что это такое. Кстати, я начал изучать JavaScript 3 недели назад, поэтому я знаю, что мой код - беспорядок. Благодаря.

var button = document.querySelector("#goButton");

[dayInput, monthInput, yearInput].forEach(function (element) {element.addEventListener("keyup", function (event) {
event.preventDefault();
if (event.keyCode === 13) {
    runCode();
    }
});

});

Я не знаю, нужно ли сюда добавлять EventListener, но в любом случае здесь.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

= является оператором присваивания. == является оператором равенства, сравнивает значение левого и бокового выражений. Измените monthPicked = 2 на monthPicked == 2.

0 голосов
/ 16 ноября 2018

Ты настройка monthPicked

monthPicked = 2

Ты хотел использовать два == для проверки на равенство.

Однако следующая проблема, которую тыВы увидите, что ваш код будет работать только в том случае, если пользователь выберет февраль.

Вы, вероятно, хотели

if ((monthPicked != 2) || (dayPicked <= 29)) {

Таким образом, если они выбирают февраль, то это должно быть до 29-го числа.Любой другой месяц может быть чем угодно.Все еще неполная логика, поскольку некоторые месяцы должны позволять 31 другим не.Но я оставлю это тебе.(Тоже високосные годы!)

...