非常简单的JavaScript代码不起作用?

时间:2014-04-02 18:08:36

标签: javascript

我是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>

它会提示我这个问题但是尽管我输入了它,它总是输出 “帕特有一个免费课时。” 有人帮我吗?

4 个答案:

答案 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.");
}

Play with this at JSFiddle

答案 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)

您需要使用双==作为条件。