首页 > 解决方案 > 是否可以在 JS switch 语句中使用 !(not) ?

问题描述

实际上,我正在使用 JS switch 语句。我在 switch 语句中使用了 (!),但它不起作用。这是我的代码

function showResult(){
  let firstNum = document.getElementById("num1").value;
  firstNum = Number(firstNum);
  let secNum = document.getElementById("num2").value;
  secNum = Number(secNum);
  let operator = document.getElementById("operator").value;
  let getErrorElem = document.getElementById("error");
  let getResElem = document.getElementById("res");
  let result;
  // alert(typeof(operator));

  switch(operator){
      case null:
      case "":
          getErrorElem.innerHTML = "Operatot field can't be empty";
          break;
  }

  switch(!(operator)){
      case "+":
      case "-":
      case "/":
      case "*":
          alert("You can only input (+, -, *, /) these signs in operator field");
          break;
  }
}

我从用户那里得到了三个值,第一个数字,第二个数字和运算符字段中的运算符我只想要(+、-、*、/)这些值,除了这些值有错误消息。我使用 switch 语句来验证这个字段,但没有工作。如果我使用 (if) 语句,它工作正常。请说明如何使用 switch 语句验证此字段!操作员。

标签: javascriptswitch-statementlogical-operators

解决方案


看来你需要这样的东西:

function showResult(){
  let firstNum = document.getElementById("num1").value;
  firstNum = Number(firstNum);
  let secNum = document.getElementById("num2").value;
  secNum = Number(secNum);
  let operator = document.getElementById("operator").value;
  let getErrorElem = document.getElementById("error");
  let getResElem = document.getElementById("res");
  let result;
  // alert(typeof(operator));

  switch(operator){
      case null:
      case "":
          getErrorElem.innerHTML = "Operatot field can't be empty";
          break;

      case "+":
      case "-":
      case "/":
      case "*":
          // Handle the right input.
          break;

      default:
          alert("You can only input (+, -, *, /) these signs in operator field");
          break;
  }
}

推荐阅读