javascript - 我认为我的 if else if 条件不起作用。有人能帮我吗?
问题描述
嗯,我正在练习 JS,所以请原谅我的代码。我只是想要一些指导和提示来改进我的代码。
我为跑步者创建了类似注册表单的东西。条件是: - 早起的成年人(比赛人数应在 1000 人或以上)在上午 9:30 跑步 - 我在这里使用了 Math.floor(Math.random() * 1000)。- 迟到的成年人在上午 11:00 运行 - 青少年注册者在下午 12:30 运行(无论是否注册)。
为青年注册者和早期成人工作..但是当连续注册早鸟时..随机比赛编号将不起作用。
这是我的 JS:
let registeredEarly;
let registeredEarlyNot;
var userAge;
var userName;
const raceNumber = Math.floor(Math.random() * 1000);
function getValueName() {
userName = document.getElementById('userName').value;
}
function getValueAge() {
userAge = document.getElementById('userAge').value;
if (userAge >= 18){
document.getElementById('showWhenAbove18').style.display = "block";
} else {
document.getElementById('showWhenAbove18').style.display = "none";
}
}
function earlyYes() {
registeredEarly = document.getElementById('registeredEarlyYes').value;
}
function earlyNo() {
registeredEarlyNot = document.getElementById('registeredEarlyNo').value;
}
function showResult() {
if (registeredEarly === 'true' && userAge >= 18) {
document.getElementById('yourResult').innerHTML = (`Hi, ${userName}! Your race number is ${raceNumber + 1000}. <br /><br /> Race will start at 9:30 AM.`);
} else if (registeredEarlyNot === 'false' && userAge >= 18) {
document.getElementById('yourResult').innerHTML = (`Hi, ${userName}! Your race number is ${raceNumber}.<br /><br /> Race will start at 11:00 AM.`);
} else {
document.getElementById('yourResult').innerHTML = (`Hi, ${userName}! Your race number is ${raceNumber}. <br /><br /> Race will start at 12:30 PM.`);
}
document.getElementById("registerNow").reset();
document.getElementById("showWhenAbove18").style.display = "none";
return true;
};
document.querySelector("button").addEventListener("click", function(event) {
showResult();
event.preventDefault();
}, false);
<!DOCTYPE html>
<html>
<head>
<title>Runner Registration</title>
</head>
<body>
<h1>Get your race number now!</h1>
<h3 id="yourResult"></h3>
<form id="registerNow" name="registerNow">
<label for="userName">Runner's Name</label><br />
<input type="text" id="userName" name="userName" placeholder="Enter your name" oninput="getValueName()"></input><br /><br />
<label for="userAge">Runner's age</label><br />
<input type="text" id="userAge" name="userAge" placeholder="Enter your age" oninput="getValueAge()"></input>
<br /><br />
<span id="showWhenAbove18" style="display: none;">
<label>Early Bird?</label>
<input type="radio" id="registeredEarlyYes" value="true" name="EarlyOrNot" onclick="earlyYes()">Yes
<input type="radio" id="registeredEarlyNo" value="false" name="EarlyOrNot" onclick="earlyNo()">No
<br /><br /></span>
<button type="submit" onclick="showResult()">Submit</button>
</form>
<br />
<p>Start time: <br /><br />
Early adults (race number at or above 1000.) run at 9:30 am.<br />
Late adults run at 11:00 am.<br />
Youth registrants run at 12:30 pm (regardless of registration).<br /></p>
</body>
</html>
谢谢!
解决方案
比赛号码不会更新,因为您只是第一次在代码中分配比赛号码。
submit
也许您应该在单击按钮时分配/创建比赛编号
也不需要保留两个变量来检查是否提前注册。
同样input
在 HTML 中是字符串,您需要使用将其转换为整数Number
let registeredEarly = false;
var userAge;
var userName;
let raceNumber;
function getValueName() {
userName = document.getElementById('userName').value;
}
function getValueAge() {
userAge = document.getElementById('userAge').value;
if (Number(userAge) >= 18){
document.getElementById('showWhenAbove18').style.display = "block";
} else {
document.getElementById('showWhenAbove18').style.display = "none";
}
}
function earlyYes() {
registeredEarly = true;
}
function earlyNo() {
registeredEarly = false;
}
function showResult() {
raceNumber = Math.floor(Math.random() * 1000);
if (registeredEarly && Number(userAge) >= 18) {
document.getElementById('yourResult').innerHTML = (`Hi, ${userName}! Your race number is ${raceNumber + 1000}. <br /><br /> Race will start at 9:30 AM.`);
} else if (!registeredEarly && userAge >= 18) {
document.getElementById('yourResult').innerHTML = (`Hi, ${userName}! Your race number is ${raceNumber}.<br /><br /> Race will start at 11:00 AM.`);
} else {
document.getElementById('yourResult').innerHTML = (`Hi, ${userName}! Your race number is ${raceNumber}. <br /><br /> Race will start at 12:30 PM.`);
}
document.getElementById("registerNow").reset();
document.getElementById("showWhenAbove18").style.display = "none";
return true;
};
document.querySelector("button").addEventListener("click", function(event) {
showResult();
event.preventDefault();
registeredEarly = false;
}, false);
<!DOCTYPE html>
<html>
<head>
<title>Runner Registration</title>
</head>
<body>
<h1>Get your race number now!</h1>
<h3 id="yourResult"></h3>
<form id="registerNow" name="registerNow">
<label for="userName">Runner's Name</label><br />
<input type="text" id="userName" name="userName" placeholder="Enter your name" oninput="getValueName()"></input><br /><br />
<label for="userAge">Runner's age</label><br />
<input type="text" id="userAge" name="userAge" placeholder="Enter your age" oninput="getValueAge()"></input>
<br /><br />
<span id="showWhenAbove18" style="display: none;">
<label>Early Bird?</label>
<input type="radio" id="registeredEarlyYes" value="true" name="EarlyOrNot" onclick="earlyYes()">Yes
<input type="radio" id="registeredEarlyNo" value="false" name="EarlyOrNot" onclick="earlyNo()">No
<br /><br /></span>
<button type="submit" onclick="showResult()">Submit</button>
</form>
<br />
<p>Start time: <br /><br />
Early adults (race number at or above 1000.) run at 9:30 am.<br />
Late adults run at 11:00 am.<br />
Youth registrants run at 12:30 pm (regardless of registration).<br /></p>
</body>
</html>
推荐阅读
- vimeo - Vimeo api v3 获取 vimeo 用户提要
- javascript - 材质ui的步进器中的map方法迭代
- java - 如何使用 Java 中的流将 2D 整数数组转换为 2D 布尔数组?
- r - 如何在 ggplot2 中制作渐变色 XY 图?
- sql - 更新和替换值的 SQL 语句
- emacs - 如何从 emacs 中打开一长串文件
- java - 如何使用 Java 和 Eclipse 在 HTML 网站上启动 Jquery 事件?
- ubuntu-16.04 - 在 ubuntu 16.04 上安装 Mongo C 驱动程序时出现问题
- keyboard - 在 Compose 键的上下文中,“第 3 级”是什么意思?
- android - Can not resolve symbol CreateTodoInput