【发布时间】:2021-05-19 01:38:45
【问题描述】:
我正在尝试在我的年龄计算器中添加闰年检查器。它工作了一段时间,现在每次我选择日期时都会输出“这是闰年”。我究竟做错了什么??谢谢!
var year;
function ageCalculator() {
var userinput = document.getElementById("DOB").value;
var dob = new Date(userinput);
if (userinput == null || userinput == '') {
document.getElementById("message").innerHTML = "**Choose a date please!";
return false;
} else {
//calculate month difference from current date in time
var month_diff = Date.now() - dob.getTime();
//convert the calculated difference in date format
var age_dt = new Date(month_diff);
//extract year from date
var year = age_dt.getUTCFullYear();
calYear();
//now calculate the age of the user
var age = Math.abs(year - 1970);
//display the calculated age
return document.getElementById("result").innerHTML =
"Age is: " + age + " years. ";
}
}
function calYear() {
var yr = year;
var yr = document.getElementsByName("year");
if (yr % 400 == 0 || (yr % 100 != 0 && yr % 4 == 0)) {
window.alert("This is not leap!");
} else {
window.alert("This is a leap!");
}
}
<input type="text" id="DOB" />
<button type="button" onclick="ageCalculator()">Calculate</button>
<span id="message"></span><br/>
<span id="result"></span>
【问题讨论】:
-
为什么需要闰年检查器?如果您的访客出生在 2 月 29 日? DOB
-
(Offtopic) PS,尽量不要在函数中使用像
document.getElementById("DOB").value这样的特殊性。相反,传递参数并高兴地知道您可以在应用程序的任何部分中将该函数与任何其他元素重用。ageCalculator(inputBirth) { /*calc*/ return outputAge; } -
(Offtopic) 避免使用最终污染全局 Window 范围的变量 (
var year)。在某些时候尝试console.log(window.year)- 这不好。 -
document.getElementsByName("year")是一个 元素 而不是它的价值!此外,Element.value返回 always 字符串 - 作为开发人员,您的任务是根据需要将字符串(或熟记类型转换)转换为整数或浮点数。 -
请edit您的问题并创建一个minimal reproducible example。
标签: javascript html function output leap-year