我是JavaScript的初学者,所以有人可以告诉我为什么这不起作用吗?
<!doctype html>
<head>
<title>Assignment</title>
</head>
<script>
var name = ("John" & "Penny" & "Pat")
name = prompt("What is the student name?");
if (name="John" && "Penny" && "Pat")
{
document.write(name + " has one free hour of lessons.");
}
else
{
document.write(name + "doesn't have any free lessons.");
}
</script>
它会提示我这个问题但是尽管我输入了它,它总是输出 “帕特有一个免费课时。” 有人帮我吗?
答案 0 :(得分:4)
你在这里使用了错误的等号:
if (name="John" && "Penny" && "Pat")
将其更改为
if (name === "John" || name === "Penny" || name === "Pat")
您还错误地设置了name
:
var name = ("John" & "Penny" & "Pat")
应该是
var name = ["John", "Penny", "Pat"];
(如果你想要一个数组。)(虽然你在下一行覆盖它,所以为什么要在第一时间设置它?)。
最后,it's bad practice要使用document.write
,请尝试使用console.log
。
到目前为止总结:
var name = prompt("What is the student name?");
if (name === "John" || name === "Penny" || name === "Pat") {
console.log(name + " has one free hour of lessons.");
} else {
console.log(name + " doesn't have any free lessons.");
}
如评论中所述,当您添加更多用户时,这会变得困难。相反,让我们将具有空闲时间的用户存储在一个数组中(因此,添加新学生很容易,只需将它们添加到数组中):
var haveFreeHour = ["John", "Penny", "Pat"];
然后,我们可以在if语句中使用indexOf
:
var haveFreeHour = ["John", "Penny", "Pat"];
var name = prompt("What is the student name?");
if (haveFreeHour.indexOf(name) > -1) {
console.log(name + " has one free hour of lessons.");
} else {
console.log(name + " doesn't have any free lessons.");
}
答案 1 :(得分:0)
您需要使用==或===进行比较。
以下是有关每个人所做事情的更多信息 http://www.2ality.com/2011/06/javascript-equality.html
严格等于=== [ES5 11.9.6]比较两个值。值与 不同的类型永远不会相等。如果两个值具有相同的类型 然后是以下断言。
等于== [ES5 11.9.3]比较两个值。如果两个值都有 相同类型:与===比较。否则:undefined == null一个数字, 一个字符串:将字符串转换为数字A布尔值和a non-boolean:将布尔值转换为数字,然后执行 比较。将字符串或数字与对象进行比较:尝试 将对象转换为基元,然后进行比较。
此外,您的名称变量应该用作数组,而另一个用于您的提示,例如:
var names = ["John", "Penny", "Pat"];
var name = prompt("What is the student name?");
然后,您可以使用indexOf(more on indexOf)来查看您的值是否在数组中,而不是进行比较,例如:
if(names.indexOf(name) > -1)...
答案 2 :(得分:0)
这是你想要的:
<!DOCTYPE html>
<head>
<title>Assignment</title>
</head>
<body>
<script type="text/javascript">
var names = ["John","Penny","Pat"];
var name = prompt("What is the student name?");
if(names.indexOf(name) > -1)
{
console.log(name + " has one free hour of lessons.");
}
else
{
console.log(name + " doesn't have any free lessons.");
}
</script>
</body>
</html>
P.S。您应该避免使用document.write。我编辑了代码并将该部分更改为console.log
答案 3 :(得分:-3)
您需要使用双==
作为条件。