我重构FizzBuzz使用功能和一切工作,除了在两个作用的if..else语句巨大意味着验证用户的输入(validateValue) 。我想提醒用户不允许空字符串,小数和NaN。检查小数的语句有效,但不是空字符串或NaN。当我输入一个空字符串或NaN时,会出现无小数的提示。我想使用香草JavaScript来解决这个问题,没有jQuery。if ... else语句来检查NaN和空字符串在JavaScript
这里是JavaScript:
function getValue(message) {
var msg = "Please enter a number from 1 to 100.";
if (message) {
msg = message;
}
return parseInt(prompt(msg));
}
function validateValue(num) {
if (num === "") {
return getValue("Please type something.");
} else if (num%1 !== 0) {
return getValue("No decimals allowed.");
} else if (isNaN(num)) {
return getValue("That is not a number!");
} else {
return num;
}
}
function fizzBuzz(num) {
for (var i = 1; i <= num; i++) {
if (i%15 === 0) {
document.getElementById("list").innerHTML += "FizzBuzz<br>";
}
else if (i%3 === 0) {
document.getElementById("list").innerHTML += "Fizz<br>";
}
else if (i%5 === 0) {
document.getElementById("list").innerHTML += "Buzz<br>";
}
else {
document.getElementById("list").innerHTML += i + "<br>";
}
}
}
var value = validateValue(getValue());
fizzBuzz(value);
下面是HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>FizzBuzz Refactor</title>
</head>
<body>
<div>
<p>Your FizzBuzz results:</p>
<ul id="list">
</ul>
</div>
<script type="text/javascript" src="app.js"></script>
</body>
</html>
嗯,首先,'的NaN%1'产量'NaN'和' NaN!== 0'是'true',所以'NaN%1!== 0'也是'true'。 –
'num'已经通过'parseInt'处理的东西,所以它不可能是'“”' – Aprillion
你从来没有得到一个空字符串validateValue'的'里面,因为你已经被称为'parseInt' – Bergi