当前位置: 首页 > 知识库问答 >
问题:

javascript(开关)中发现无效运算符如何解决此代码

牟星火
2023-03-14
    <form action="">
        <h2>Inter A Numbers</h2>
        <label for="">Number One</label>
        <input type="text" id="num1">
        <br>
        <br>
        <label for="">Number Tow</label>
        <input type="text" id="num2">
        <br>
        <br>
        <input type="button" onclick="operator()" value="Multiply">
        <input type="button" onclick="operator()" value="Divide">
        <input type="button" onclick="operator()" value="Addition">
        <input type="button" onclick="operator()" value="Subtraction">
        <input type="button" onclick="operator()" value="Clear">
    </form>
    <p>The Result Is: <br>
        <span id="result"> </span>
    </p>


<script>

    let result;
    const number1 = document.getElementById("num1");
    const number2 = document.getElementById("num2");
    switch(number1,number2) {
    case '+':
        result = number1 + number2;
        document.write(`${number1} + ${number2} = ${result}`);
        break;
    
    case '-':
         result = number1 - number2;
         document.write(`${number1} - ${number2} = ${result}`);
        break;
    
    case '*':
         result = number1 * number2;
         document.write(`${number1} * ${number2} = ${result}`);
        break;
    
    case '/':
         result = number1 / number2;
         document.write(`${number1} / ${number2} = ${result}`);
        break;
    
    default:
        document.write('Invalid operator found');
        break;

}
<script/>

共有3个答案

柯清野
2023-03-14

您需要在Switch中传递表达式。表达式是与每个case子句相匹配的内容。在您的情况下,表达式是确定运算符的字符 (' ', '-', '/', '*').此外,脚本中没有名为操作符的函数。我认为它应该是这样运作的:

function operator(operation) {
  let result;
  const number1 = Number(document.getElementById("num1").value);
  const number2 = Number(document.getElementById("num2").value);

  if (!operation) {
    document.getElementById("result").innerHTML = "";
    document.getElementById("num1").value = "";
    document.getElementById("num2").value = "";
  } else if (isNaN(number1) || isNaN(number2))
    document.getElementById("result").innerHTML = "Invalid operation found";
  else {
    switch (operation) {
      case '+':
        result = number1 + number2;
        document.getElementById("result").innerHTML = (`${number1} + ${number2} = ${result}`);
        break;

      case '-':
        result = number1 - number2;
        document.getElementById("result").innerHTML = (`${number1} - ${number2} = ${result}`);
        break;

      case '*':
        result = number1 * number2;
        document.getElementById("result").innerHTML = (`${number1} * ${number2} = ${result}`);
        break;

      case '/':
        result = number1 / number2;
        document.getElementById("result").innerHTML = (`${number1} / ${number2} = ${result}`);
        break;
    }
  }
}
<form action="">
  <h2>Inter A Numbers</h2>
  <label for="">Number One</label>
  <input type="text" id="num1">
  <br>
  <br>
  <label for="">Number Tow</label>
  <input type="text" id="num2">
  <br>
  <br>
  <input type="button" onclick="operator('*')" value="Multiply">
  <input type="button" onclick="operator('/')" value="Divide">
  <input type="button" onclick="operator('+')" value="Addition">
  <input type="button" onclick="operator('-')" value="Subtraction">
  <input type="button" onclick="operator()" value="Clear">
</form>
<p>The Result Is: <br>
  <span id="result"> </span>
</p>
柳项明
2023-03-14

你在开关里的表情是错误的

switch(number1,number2)

根据W3学校的文件

这就是你的开关语句应该是什么样子

switch(expression) {
  case x:
    // code block
    break;
  case y:
    // code block
    break;
  default:
    // code block
}

这就是它的工作原理:

>

  • 开关表达式计算一次。

    表达式的值与每个大小写的值进行比较。

    如果存在匹配项,则执行关联的代码块。

    如果没有匹配,则执行默认代码块。

    我猜你想得到操作符的值,

    而不是用

    switch(number1,number2)
    

    你应该为你的接线员找到一份推荐信

    例如。

        const operator= document.getElementById("operator");
    

    然后把你的开关换成你的操作员

    switch(operator)
    

  • 郑嘉年
    2023-03-14

    1) 您应该通过JS在opeartor函数中传递运算符,如下所示:

    <input type="button" onclick="operator('*')" value="Multiply">
    

    2) 您的脚本将运行一次,因此最好创建一个函数并在单击按钮时调用它。

    3) 对于数学运算

    const number1 = +document.getElementById( "num1" ).value;
    const number2 = +document.getElementById( "num2" ).value;
    
    const display = document.getElementById("result");
    
    function operator(op) {
      let result;
      const number1 = +document.getElementById("num1").value;
      const number2 = +document.getElementById("num2").value;
      switch (op) {
        case '+':
          result = number1 + number2;
          display.textContent = `${number1} + ${number2} = ${result}`;
          break;
    
        case '-':
          result = number1 - number2;
          display.textContent = `${number1} - ${number2} = ${result}`;
          break;
    
        case '*':
          result = number1 * number2;
          display.textContent = `${number1} * ${number2} = ${result}`;
          break;
    
        case '/':
          result = number1 / number2;
          display.textContent = `${number1} / ${number2} = ${result}`;
          break;
    
        case 'clear':
          display.textContent = "";
          break;
    
        default:
          display.textContent = 'Invalid operator found';
          break;
    
      }
    }
    html lang-html prettyprint-override"><form action="">
      <h2>Inter A Numbers</h2>
      <label for="">Number One</label>
      <input type="text" id="num1">
      <br>
      <br>
      <label for="">Number Tow</label>
      <input type="text" id="num2">
      <br>
      <br>
      <input type="button" onclick="operator('*')" value="Multiply">
      <input type="button" onclick="operator('/')" value="Divide">
      <input type="button" onclick="operator('+')" value="Addition">
      <input type="button" onclick="operator('-')" value="Subtraction">
      <input type="button" onclick="operator('clear')" value="Clear">
    </form>
    <p>The Result Is: <br>
      <span id="result"> </span>
    </p>
     类似资料:
    • 问题内容: 假设我有如下JavaScript代码 这两个“ this”对象是指什么? 问题答案: 全局执行上下文中的值引用全局对象,例如: 对于功能代码,实际上取决于您如何调用该功能,例如,在以下情况下隐式设置该值: 调用没有 基础对象 引用的函数: 该值还将引用全局对象。 调用绑定为对象属性的函数 : 该值将参考。 使用运算符: 该值将引用从继承的新创建的对象。 另外,可以在调用函数时使用或方法

    • 我正在用for循环和while循环编写一个简单的程序,出现了一个。 这是我的密码: 下面是发生的错误:

    • 问题内容: 从我的阅读中,我发现不存在内置的三元运算符(我将很高兴对此有更多的了解。)。 我发现以下代码可以替代: 我不明白这段代码是如何工作的。谁能解释我代码实际上是如何工作的?我也很想知道为什么三元运算符不存在。关于此的任何参考或链接将很有用。 我在Windows Vista上运行Python 2.6.4。 问题答案: Python具有类似于C等人中的三元运算符的构造。它的工作原理如下: 并等

    • 本文向大家介绍Javascript实现运算符重载详解,包括了Javascript实现运算符重载详解的使用技巧和注意事项,需要的朋友参考一下 最近要做数据处理,自定义了一些数据结构,比如Mat,Vector,Point之类的,对于加减乘除之类的四则运算还要重复定义,代码显得不是很直观,javascript没有运算符重载这个像C++、C#之类的功能的确令人不爽,于是想“曲线救国”,自动将翻译代码实现运

    • 问题内容: 是否可以在switch语句中使用关系运算符(<,<=,>,> =)? 上面的例子(显然)不起作用 问题答案: 你不能。 从jls-14.11 关系运算符(<,<=,>,> =)导致并且不允许这样做。 以下所有条件必须为真,否则会发生编译时错误: 与switch语句关联的每个case常量表达式都必须可分配给开关Expression的类型(第5.2节)。 与switch语句关联的大小写常量

    • 本文向大家介绍javascript运算符——逻辑运算符全面解析,包括了javascript运算符——逻辑运算符全面解析的使用技巧和注意事项,需要的朋友参考一下 前面的话 逻辑运算符对操作数进行布尔运算,经常和关系运算符一样配合使用。逻辑运算符将多个关系表达式组合起来组成一个更复杂的表达式。逻辑运算符分为逻辑非'!'、逻辑与'&&'、逻辑或'||'3种,本文将介绍这三种逻辑运算符 逻辑非 逻辑非操作