Javascript if 语句不起作用

IT技术 javascript if-statement
2021-01-18 16:16:18

我想要做的非常简单:

  • 如果输入是0,则意味着他们没有输入数字,它应该告诉你。
  • 当输入是 时7,它应该说你做对了。
  • 其他任何事情,它都应该告诉你你做错了。

但无论输入是什么,它都只输出“7 是正确的”行,我无法弄清楚什么是错的。

<script type="text/javascript">
function problem2 ()
{
var number = 0;
var text=document.getElementById("output");
number = prompt("Enter a number between 1 and 10 please" , 0);
if (number = 0)
    {
     text.value = "You didn't enter a number!";
    }
if (number = 7)
    {
     text.value = "7 is correct!";
    }
else
    {
     text.value = "Sorry, ", input, "is not correct!";
    }
}
</script>
<input type="button" value="Click here" onclick="problem2()">
<input id="output" type="text">
3个回答

您正在分配=. 使用=====

if( 0 == number ){

  text.value = "You didn't enter a number!";
}

此外,请注意您的支具位置。Javascript 喜欢在行尾自动添加分号。来源

除非您确切地知道为什么要使用==否则您应该更喜欢===哪个不会强制类型。另请参阅:关于该主题的这个很棒的 stackoverflow 答案
2021-03-27 16:16:18
===在上面的示例中使用将不起作用,因为 的返回值prompt()是一个字符串。你需要使用if(number === "7")...
2021-03-31 16:16:18

您使用赋值运算符作为条件而不是比较运算符:

if (number = 0) // falsy. Same as if (false)
    {
     text.value = "You didn't enter a number!";
    }
if (number = 7) // truthy. Same as if (true)
    {
     text.value = "7 is correct!";
    }
else
    {
     text.value = "Sorry, ", input, "is not correct!";
    }

或者,您可以使用 switch 并更轻松地组织条件:

switch (number) {
    case 0: 
        text.value = "You didn't enter a number!";
        break;

    case 7:
        text.value = "7 is correct!";
        break;

    default:
        text.value = "Sorry, ", input, "is not correct!";
        break;
}

这是一个包含一些修复和改进的代码(我评论了我更改的内容):

function problem2 (){
    //I multiplied by * 1 to work with numbers, also used || to default to 0 in case of NaN
    var num = (prompt("Enter a number between 1 and 10 please" , 0) * 1) || 0;
    var msg = "";

    if (!num){ //I prefer this over 'num == 0'
         msg = "You didn't enter a number!";
    //you should use 'else if' in this case
    }else if (num == 7){//'=' is for assignment, use '==' or '===' instead
         msg = "7 is correct!";
    }else{
        //you had an undefined var 'input', you probably meant 'num'
        //you also were connecting var and strings using commas, use '+' instead
         msg = "Sorry, " + num + " is not correct!"; //added a space in ' is'
    }

    //no need to store the element in a var anymore :D
    document.getElementById("output").value = msg;
}

此外,还可以进行另外两项更改:

  • 只有一个var(例如var something = "", somethingElse = 99;
  • 从头开始分配默认文本,喜欢var msg = "default"并删除else

注意:我所做的一个未公开的更改是重命名一些 vars,我鼓励大家停止使用 vars 之类的number, text, string,如果你有这个坏习惯,你最终会错误地使用非法的 var 名称。