(JavaScript)使用带有输入框的switch语句

时间:2016-11-01 03:09:18

标签: javascript html switch-statement

JavaScript的新手,如果有明显的答案,请原谅我。我试图获取一个switch语句来输出一个特定的短语,具体取决于输入框的值,但它只会输出默认选项。我做错了什么?感谢。

<input id="inputIQ" type="number"/>
<button onclick="inputIQFunction()">Submit</button>
<script>
function inputIQFunction()
{
var userinput = document.getElementById("inputIQ").value;
switch (userinput) {

case userinput <= 10:
alert("Less than 10");
break;

case userinput > 10:
alert("Greater than 10");
break;

default:
alert("Please input value");
break;
}
}
</script>

6 个答案:

答案 0 :(得分:2)

基本上,switch不支持条件表达式。根据案例,它只是跳到了值。

如果您将true放入switch (true)部分,它会跳转到具有真实价值的案例。

试试这个

switch (true) {

  case userinput <= 10: 
    alert("Less than 10");
    break;

  case userinput > 10:
    alert("Greater than 10");
    break;

  default:
    alert("Please input value");
    break;
}

答案 1 :(得分:1)

试试这样:

<input id="inputIQ" type="number"/>
<button onclick="inputIQFunction()">Submit</button>
<script>
function inputIQFunction() {
    var userinput = document.getElementById("inputIQ").value;
    userinput = parseInt(userinput);
    switch (true) {

        case userinput <= 10:
            alert("Less than 10");
            break;

        case userinput > 10:
            alert("Greater than 10");
            break;

        default:
            alert("Please input value");
            break;
      }
  }
</script>

答案 2 :(得分:0)

switch通过测试switch(expression)中表达式的值对每个case的值进行测试,直到找到匹配的值。

在您的代码中,userinput中的switch(userInput)字符串,但您的两个case语句的值均为truefalse。因此,您希望使用switch(true) - 这就是switch如何处理每个case的任意条件。在上下文中:

switch(true) {
  case userinput <= 10:
    alert("Less than 10");
    break;

  case userinput > 10:
    alert("Greater than 10");
    break;

  default:
    alert("Please input value");
    break;
}

答案 3 :(得分:0)

您无法在switch语句中使用逻辑条件。它实际上会将您的userinput与条件结果(true \ false)进行比较,而这种结果从未发生过。

改为使用条件:

&#13;
&#13;
function inputIQFunction() {  
  function getIQFunctionOutput(inputValue) {
    var parsedInput = parseInt(inputValue);

    if (Number.isNaN(parsedInput))
      return "Please, enter a correct value";

    return parsedInput <= 10
      ? "Less or equal than 10"
      : "Greater than 10";
  }

  var userinput = document.getElementById("inputIQ").value;
  var output = getIQFunctionOutput(userinput);
  alert(output);
}
&#13;
<input id="inputIQ" type="number" />
<button onclick="inputIQFunction()">Submit</button>
&#13;
&#13;
&#13;

P.S。实际上,您可以通过以下方式使用switch逻辑语句:

switch (true) {
    case userinput <= 10:
        break;
    case userinput > 10:
        break;
}

但我强烈建议不要使用这种方法,因为它会使您的代码更难以阅读和维护。

答案 4 :(得分:0)

我知道这是一个旧线程,但是我刚开始使用JS(一周之内),这是我可以创建的最简单的东西,以便理解逻辑。

使用用户输入值时,开关似乎只能通过true / false起作用。

我的脚本如下:

<script>

document.getElementById("click").onclick = function () {
    var day = document.getElementById("day").value;

    switch (true) {
        case day == 1:
            document.write("Monday");
            break;
        case day == 2:
            document.write("Tuesday");
            break;
        default:
            document.write("Please enter valid number")
    }

</script>

就像我说我只有一周的时间,但是我用课程可能无法教的这些小东西为自己准备了一份小型的档案袋,我欢迎任何希望为我提供帮助的人,也希望它有助于理解逻辑。

答案 5 :(得分:0)

您没有满足“switch & case”的要求

用户输入 <= 10: 意思是“真实” 因为 '<=' 是一个比较运算符。它比较“userinput”和“10”(给定值),并以布尔值(即真或假)为您提供答案。 但是,在 switch case 中,您需要一个整数值。

另一个

您输入了这个 'switch (userinput)' 这里的 'switch' 考虑到 'userinput' 一个应该是整数的字符串, 你可以用这个来修复它。

开关(评估(用户输入))