0

帮助!if/elseif/else 代码块不起作用!当代码到达提示“你会做什么?” 无论您键入什么,您都会收到所有警报。当您键入不在 if 块中的命令时,它应该显示为空白,如果您输入了 R、L 或 M,它会提示您。输入 F 应该不会提示您。

while (Room = 1) {
    var Choice = prompt ("What will you do?");
    if (Turn = "Start");
    {
        if (Choice = "F");
    {
        Turn = "1";
    }
    else if (Choice = "R");
    {
        alert ("You cannot do that...");
    }
    else if (Choice = "L");
    {
        alert ("You cannot do that...");
    }
    else if (Choice = "M");
    {
        alert ("    1"+'\n'+"    1" + '\n' + "221" + '\n' + "    X");
    }
    else 
    {
        alert ("You cannot do that...")
    }
}
4

7 回答 7

5

使用==而不是=. 单个等号是一个变量赋值,并计算赋值的结果。==用于相等性检验。

于 2013-10-08T06:52:44.857 回答
2

;您的 if 和 else if 语句中删除。

;代表语句结束

您也不能=用作比较操作,而是使用@Andy 提到的(严格比较)=====

while (Room == 1) { // Actually your code fails at the beginning itself.

但是,我建议您将其switch用于您的情况。

于 2013-10-08T06:52:12.013 回答
1

如果您写“=”单等于意味着为该变量赋值。因此,出于条件目的,您应该将“=” Single equalto 更改为“== Double equalto”。

而如果 else 没有结尾“;” Javascript 中需要分号。删除它。

我已经更新了以下内容,请尝试一下。

while (Room == 1) {
    var Choice = prompt ("What will you do?");
    if (Turn == "Start")
    {
        if (Choice == "F")
        {
            Turn == "1";
        }
        else if (Choice == "R")
        {
            alert ("You cannot do that...");
        }
        else if (Choice == "L")
        {
            alert ("You cannot do that...");
        }
        else if (Choice == "M")
        {
            alert ("    1"+'\n'+"    1" + '\n' + "221" + '\n' + "    X");
        }
        else 
        {
            alert ("You cannot do that...");
        }
    }
}
于 2013-10-08T06:55:54.377 回答
0

删除and循环;末尾的分号ifelse if

并且还使用比较字符串==,而不是=

用这个替换你的代码

while (Room = 1) { //here Room is int variable
  var Choice = prompt ("What will you do?");
  if (Turn == "Start")
  {
    if (Choice =="F")
    {
      Turn = "1";
    }
    else if (Choice == "R")
    {
      alert ("You cannot do that...");
    }
    else if (Choice == "L")
    {
      alert ("You cannot do that...");
    }
    else if (Choice == "M")
    {
      alert ("1" + '\n' + "1" + '\n' + "221" + '\n' + "X");
    }
    else 
    {
      alert ("You cannot do that...")
    }
}
于 2013-10-08T06:53:20.997 回答
0

Java 脚本不考虑单个 '=' 它与 '==' 一起使用

try
if (Turn == "Start");

Instead of
if (Turn = "Start");
于 2013-10-08T06:56:07.057 回答
0

在所有 if-elseif 语句之后都有一个分号。因此,无论 if 中的布尔值是什么,if 块都是空的。只需删除分号就可以了。

有了这个:

if(1 == 1);
{
    alert('Nope');
}

if 语句后面的块总是被执行,因为 if 结束的分号。

if(1 == 1)
{
   alert('Yup');
}

作品。

于 2013-10-08T06:52:07.223 回答
-1

此外,除了使用严格比较之外,我强烈建议在 if(...) 之后不要在新行中写左花括号:

喜欢:

if(...){

代替:

if(...)
{

原因是 JavaScript 的内置分号插入,所以有时它会产生静默错误或意外行为。在其他一些编程语言中,这无关紧要,但在 JavaScript 中确实如此。

于 2013-10-08T08:38:44.363 回答