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,但是无论如何都在这里。
答案 0 :(得分:1)
您正在设置 monthPicked
monthPicked = 2
您打算使用两个==
来检查是否相等。
但是,您将看到的下一个问题是,仅当用户选择2月时,您的代码才能正常工作。
您可能想要
if ((monthPicked != 2) || (dayPicked <= 29)) {
这样,如果他们选择2月,则必须在29日之前。其他任何月份都可以。逻辑仍然不完整,因为某些月份应该允许31个其他月份不能。但我会留给你。 (还有leap年!)
答案 1 :(得分:0)
=是分配运算符。 ==是等于运算符,比较左侧表达式和侧面表达式的值。将monthPicked = 2更改为monthPicked == 2。