嵌套的IF语句无法正常运行

时间:2018-11-16 14:58:13

标签: javascript if-statement numbers var

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!"}
}

这是我代码的一部分,我试图限制在输入框中搜索日期。例如,如果选择了2月,而日期是30日,则应该抛出错误。但是,无论您选择哪个月份,上面看到的代码都会发生所有事情,它始终返回2月份。我知道我肯定做错了,但是我不知道这是什么。顺便说一句-我三周前开始学习JavaScript,所以我知道我的代码很烂。谢谢。

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 :(得分:1)

您正在设置 monthPicked

monthPicked = 2

您打算使用两个==来检查是否相等。

但是,您将看到的下一个问题是,仅当用户选择2月时,您的代码才能正常工作。

您可能想要

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

这样,如果他们选择2月,则必须在29日之前。其他任何月份都可以。逻辑仍然不完整,因为某些月份应该允许31个其他月份不能。但我会留给你。 (还有leap年!)

答案 1 :(得分:0)

=是分配运算符。 ==是等于运算符,比较左侧表达式和侧面表达式的值。将monthPicked = 2更改为monthPicked == 2。