【发布时间】:2019-04-19 18:51:12
【问题描述】:
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!"}
}
这是我的代码中的一个 sn-p,我试图限制在我的输入框中搜索日期。例如,如果选择了 2 月并且这一天是 30 日,它应该会抛出一个错误。但是,您在上面看到的代码所发生的一切,无论我选择哪个月份,它都会一直返回 2 月份。我知道我肯定做错了什么,但我不知道它是什么。顺便说一句 - 我 3 周前开始学习 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,但无论如何都在这里。
【问题讨论】:
-
typo
monthPicked = 2如果你运行 linter,它会捡起这些东西。 -
旁注:月份在 Date 对象中从零开始,因此 1 月是第 0 个月,而第 12 个月不存在。因此,一旦您从输入创建 Date 对象,逻辑就必须处理它。
-
常见错误可以通过左侧的常量避免,因此 if(2 = monthPicked) 不能是赋值。 (为了获得更好的代码,请执行一个返回 true 或 false 的 ValidDate 函数。)
标签: javascript if-statement numbers var