【发布时间】:2022-01-15 08:56:33
【问题描述】:
我正在创建一个网站,您可以在其中输入您出生时的信息,代码会输出您的年龄(以天为单位)。我通过使用“if”语句来实现这一点。我创建了一个用于检测无效输入的系统。它会正确检测到无效输入,但也会将有效输入检测为无效。我希望有人可以帮我解决这个问题。这是JS代码。
function ageInDays() {
// variables
var birthYear = prompt("What Year Were You Born In?");
var ageInDayss = (2021 - birthYear) * 365;
//text
if (birthYear > 1990 && birthYear < 2021) {
var h1 = document.createElement('h1');
var textAnswer = document.createTextNode("You are " + ageInDayss + " days old.");
h1.setAttribute('id', 'ageInDays');
h1.appendChild(textAnswer);
document.getElementById('flex-box-result').appendChild(h1);
}
if (birthYear < 1920 || birthYear != 'NaN' || birthYear > 2021) {
var h1 = document.createElement('h1');
var textAnswer = document.createTextNode("Invalid Input. Please Try Again.");
h1.setAttribute('id', 'ageInDays');
h1.appendChild(textAnswer);
document.getElementById('flex-box-result').appendChild(h1);
}
if (birthYear > 1920 && birthYear < 1990) {
var h1 = document.createElement('span');
var h2 = document.createElement('span');
var textAnswer = document.createTextNode("You are " + ageInDayss + " days old.");
var textAnswer1 = document.createTextNode(" Yikes... that's old.");
h1.setAttribute('id', 'ageInDays');
h2.setAttribute('id', 'yikes');
h1.appendChild(textAnswer);
h2.appendChild(textAnswer1);
document.getElementById('flex-box-result').appendChild(h1).appendChild(h2);
}
}
如果您运行此代码,您可以看到如果您输入了一个有效的输入(1920 年到 2021 年之间),它会检测到该输入是无效的。请帮我解决这个问题。
【问题讨论】:
-
您可能想在第一个条件之后的每个条件处添加 else ifs?否则即使第一个if条件为真,其余代码仍在执行中
-
if (birthYear<1920 || birthYear!= 'NaN' || birthYear>2021)-birthYear的值几乎永远不会是'NaN',所以这个条件几乎总是成立。 -
仅供参考,您忽略了考虑出生于 1920、1990 和 2021 年的人,因为 > 和
-
是的。待输出系统正常工作后,我会这样做。
-
我为你做了一个js fiddle。如您所见,输入没有问题。这与你如何显示它有关。
标签: javascript if-statement output