javascript - 如何在 JavaScript 中显示年龄(会员)计算器的结果?
问题描述
我正在开发一个函数来计算成员的经过时间,类似于年龄计算器函数。因此,当我单击按钮时,它会显示结果,但只显示几秒钟,就像闪光灯一样。我几乎看不到这些数字,而且似乎计算得很好。自从我开始编程以来,这是我第一次看到这样的东西。知道为什么会发生这种情况吗?
这是代码:
let daysM = document.getElementById("mem-date");
let monthM = document.getElementById("mem-month");
let yearM = document.getElementById("mem-year");
let timeM = document.getElementById("mem-time");
const button = document.getElementById("calc-btn");
var today = new Date();
let d = today.getDate();
let m = today.getMonth() + 1;
let y = today.getFullYear();
let maxDays = 0;
let monthNum = 1;
button.addEventListener("click", (days, month, year) => {
days = daysM.value;
month = monthM.value;
year = yearM.value;
if (daysM.value == "" || monthM.value == "" || yearM.value == "") {
return alert("Please enter the date properly");
}
if (m == 1) { // Jan
maxDays = 31;
monthNum = 1;
}
else if (m == 2) { // Feb
maxDays = 28;
monthNum = 2;
}
else if (m == 3) { // Mar
maxDays = 31;
monthNum = 3;
}
else if (m == 4) { // Apr
maxDays = 30;
monthNum = 4;
}
else if (m == 5) { // May
maxDays = 31;
monthNum = 5;
}
else if (m == 6) { // Jun
maxDays = 30;
monthNum = 6;
}
else if (m == 7) { // Jul
maxDays = 31;
monthNum = 7;
}
else if (m == 8) { // Aug
maxDays = 31;
monthNum = 8;
}
else if (m == 9) { // Sep
maxDays = 30;
monthNum = 9;
}
else if (m == 10) { // Oct
maxDays = 31;
monthNum = 10;
}
else if (m == 11) { // Nov
maxDays = 30;
monthNum = 11;
}
else { // Dec
maxDays = 31;
monthNum = 12;
}
var memYears = y - year;
if (m <= month) {
m = m + 12;
}
var memMonths = m - month;
var memDays = (maxDays - d) + parseInt(days);
timeM.innerHTML = `You have been a member for ${memYears} y, ${memMonths} m and ${memDays} d`;
})
<h1 class="headings1">Memberships</h1>
<form>
<label id="member" for="memberdate">Enter the date you became member</label>
<input type="number" id="mem-date" class="mem-input" placeholder="date">
<input type="number" id="mem-month" class="mem-input" placeholder="month">
<input type="number" id="mem-year" class="mem-input" placeholder="year">
<button id="calc-btn">Calculate</button>
</form>
<div id="timeSection">
<p id="mem-time"></p>
</div>
在此先感谢您的帮助!!!
解决方案
当您单击正在提交的按钮并且页面正在重新呈现时,您有一个表单。因此,要么添加onsubmit="return false;"
以防止提交表单,要么更好地删除表单标签,因为它根本不需要。
let daysM = document.getElementById("mem-date");
let monthM = document.getElementById("mem-month");
let yearM = document.getElementById("mem-year");
let timeM = document.getElementById("mem-time");
const button = document.getElementById("calc-btn");
var today = new Date();
let d = today.getDate();
let m = today.getMonth() + 1;
let y = today.getFullYear();
let maxDays = 0;
let monthNum = 1;
button.addEventListener("click", (days, month, year) => {
days = daysM.value;
month = monthM.value;
year = yearM.value;
if (daysM.value == "" || monthM.value == "" || yearM.value == "") {
return alert("Please enter the date properly");
}
if (m == 1) { // Jan
maxDays = 31;
monthNum = 1;
}
else if (m == 2) { // Feb
maxDays = 28;
monthNum = 2;
}
else if (m == 3) { // Mar
maxDays = 31;
monthNum = 3;
}
else if (m == 4) { // Apr
maxDays = 30;
monthNum = 4;
}
else if (m == 5) { // May
maxDays = 31;
monthNum = 5;
}
else if (m == 6) { // Jun
maxDays = 30;
monthNum = 6;
}
else if (m == 7) { // Jul
maxDays = 31;
monthNum = 7;
}
else if (m == 8) { // Aug
maxDays = 31;
monthNum = 8;
}
else if (m == 9) { // Sep
maxDays = 30;
monthNum = 9;
}
else if (m == 10) { // Oct
maxDays = 31;
monthNum = 10;
}
else if (m == 11) { // Nov
maxDays = 30;
monthNum = 11;
}
else { // Dec
maxDays = 31;
monthNum = 12;
}
var memYears = y - year;
if (m <= month) {
m = m + 12;
}
var memMonths = m - month;
var memDays = (maxDays - d) + parseInt(days);
timeM.innerHTML = `You have been a member for ${memYears} y, ${memMonths} m and ${memDays} d`;
})
<h1 class="headings1">Memberships</h1>
<form onsubmit="return false;">
<label id="member" for="memberdate">Enter the date you became member</label>
<input type="number" id="mem-date" class="mem-input" placeholder="date">
<input type="number" id="mem-month" class="mem-input" placeholder="month">
<input type="number" id="mem-year" class="mem-input" placeholder="year">
<button id="calc-btn">Calculate</button>
</form>
<div id="timeSection">
<p id="mem-time"></p>
</div>
推荐阅读
- reactjs - 如何使用 React 和 Firebase 将注册用户从 domain.com 重定向到 app.domain.com?
- azure - 当我们为 Azure SQL Server 定义 Active Directory Admin 时,我们可以删除 Server Admin 吗?
- loops - 如何在访问该数据类型的元素时迭代某些数据类型的列表
- content-management-system - Opencart:安装后模块不显示
- python - 有没有办法在同一个列表上进行多次插入?
- python - 在 Tensorflow 2 中手动设置 trainable_variables 权重
- c# - Unity Editor 场景为黑色
- reactjs - ant 子菜单无法更改为垂直
- javascript - 网格容器内的卡片:列表中的每个孩子都应该有一个唯一的“key”道具
- bash - 作为兄弟运行 docker