在过去的两周里,我一直在学校里练习这个JavaScript的事情,我一直在做功课。
在书中,#14; JavaScript:The Good Parts"作者Douglas Crockford在第11页的if -statement中列出了虚假值。现在我试图在html表单中测试用户的输入,以便在case语句中返回false。但我认为,有些事情确实是错误的。这是我的代码。任何人都可以帮助我吗?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>My JavaScript Page</title>
<!--JavaScript starts here-->
<script>
function test() {
var input = document.getElementById("userInput").value;
switch (input){
case false:
document.getElementById("result").innerHTML = "False"
break;
case typeof() == "null":
document.getElementById("result").innerHTML = "False"
break;
case typeof() == "undefined":
document.getElementById("result").innerHTML = "False"
break;
case '':
document.getElementById("result").innerHTML = "False"
break;
case "0":
document.getElementById("result").innerHTML = "False"
break;
case isNan():
document.getElementById("result").innerHTML = "False"
break;
default : document.getElementById("result").innerHTML = "True"
}
}
</script>
<!--End of JavaScript-->
</head>
<body>
<h1>True or False in JavaScipt</h1>
<form>
Your Input: <input type="text" id="userInput">
<br>
<button type="button" value="Test" onClick="test()">Test!</button>
</form>
<br>
<br>
<p id="result"></p>
</body>
</html>
答案 0 :(得分:1)
case
之后的值必须等于switch()
语句中的值,即
case x:
类似于:
if (input == x) {
您无法在那里进行比较,并希望它将input
插入其中的相应部分。
而不是switch
,您需要使用if
。
if (input === false) {
document.getElementById("result").innerHTML = "False";
} else if (typeof(input) == "null") {
document.getElementById("result").innerHTML = "False";
} else if (typeof(input) == "undefined") {
document.getElementById("result").innerHTML = "False";
} else if (input === "") {
document.getElementById("result").innerHTML = "False";
} else if (input === "0") {
document.getElementById("result").innerHTML = "False";
} else if (isNaN(input)) {
document.getElementById("result").innerHTML = "False";
} else {
document.getElementById("result").innerHTML = "True";
}
由于所有情况都在做同样的事情,你可以将它们与OR运算符||
结合起来:
if (input === false || typeof(input) == "null" || typeof(input) == "undefined" || input === "" || input === "0" || isNaN(input)) {
document.getElementById("result").innerHTML = "False";
} else {
document.getElementById("result").innerHTML = "True";
}
顺便说一句,请注意,如果您尝试识别所有虚假值,那么"0"
案例就是错误的。唯一的字符串是空字符串""
。 数字 0
是假的,但不是字符串"0"
。
请参阅https://developer.mozilla.org/en-US/docs/Glossary/Falsy以获取Javascript中所有虚假值的完整列表。