首页 > 解决方案 > 如何使用javascript为长度单位创建if else语句

问题描述

我的目标是用长度单位创建一个真正的数学陈述。我唯一遇到问题的部分是 Javascript 的 if else 部分。我应该改变什么,以便我的长度单位的 if else 语句有效?这是我到目前为止所做的:

var operators = ['+', '-'];
var e = ['km', 'm'];

function F1() {
  num1 = document.getElementById("num1");
  num2 = document.getElementById("num2");
  rnum1 = Math.floor((Math.random() * 10) + 1);
  rnum2 = Math.floor((Math.random() * 10) + 1);
  num1.innerHTML = rnum1;
  num2.innerHTML = rnum2;
  oper = document.getElementById("operator");
  op = operators[Math.floor(Math.random() * 2)];
  oper.innerHTML = op;
  eht = document.getElementById("e1");
  eht2 = document.getElementById("e2");
  eh = e[Math.floor(Math.random() * e.length)];
  eh2 = e[Math.floor(Math.random() * e.length)];
  eht.innerHTML = eh;
  eht2.innerHTML = eh2;
  answer = document.getElementById("answer");

  if (eh = 'km') {
    if (eh2 = 'm') {
      answer.innerHTML = eval(rnum1 * 1000 + op + rnum2);
    } else {
      if (eh = 'm') {
        if (eh2 = 'km') {
          answer.innerHTML = eval(rnum1 + op + rnum2 * 1000);
        } else {
          if (eh = 'km') {
            if (eh2 = 'km') {
              answer.innerHTML = eval(rnum1 * 1000 + op + rnum2 * 1000);
            } else {
              answer.innerHTML = eval(rnum1 + op + rnum2)
            };
          }
        }
      }
    }
  }
<p> <label id="num1"> </label> <label id="e1"> </label>
  <label id="operator"> </label>
  <label id="num2"> </label> <label id="e2"> </label> =
  <label id="answer">m </label> </p>
<button onclick="F1()"> New </button>

标签: javascripthtmlif-statement

解决方案


我希望我能更好地理解这个问题,但我根据 Jaromanda X 的观察更新了你的 IF-ELSE 逻辑。

=仅用于赋值,不应用于检查相等性。相反,您应该在尝试评估多个值的相等性时使用==or 。===

有关此概念的更多信息,请参阅MDN Equality comparisons and sameness

下面是您的代码的更新版本,它可以编译并运行,但同样,我不确定预期的结果究竟是什么,所以我会让您确定它现在是否按预期工作。

<script>
    var operators = ['+', '-'];
    var e = ['km', 'm'];

    function F1() {
        num1 = document.getElementById("num1");
        num2 = document.getElementById("num2");
        rnum1 = Math.floor((Math.random() * 10) + 1);
        rnum2 = Math.floor((Math.random() * 10) + 1);
        num1.innerHTML = rnum1;
        num2.innerHTML = rnum2;
        oper = document.getElementById("operator");
        op = operators[Math.floor(Math.random() * 2)];
        oper.innerHTML = op;
        eht = document.getElementById("e1");
        eht2 = document.getElementById("e2");
        eh = e[Math.floor(Math.random() * e.length)];
        eh2 = e[Math.floor(Math.random() * e.length)];
        eht.innerHTML = eh;
        eht2.innerHTML = eh2;
        answer = document.getElementById("answer");

        if (eh === 'km') {
            if (eh2 === 'm') {
                answer.innerHTML = eval(rnum1 * 1000 + op + rnum2);
            }

            else {
                if (eh === 'm') {
                    if (eh2 === 'km') {
                        answer.innerHTML = eval(rnum1 + op + rnum2 * 1000);
                    }

                    else {
                        if (eh === 'km') {
                            if (eh2 === 'km') {
                                answer.innerHTML = eval(rnum1 * 1000 + op + rnum2 * 1000);
                            }
                            else {
                                answer.innerHTML = eval(rnum1 + op + rnum2)
                            };
                        }
                    }
                }
            }
        }
    }
</script>

<p>
    <label id="num1"> </label> <label id="e1"> </label>

    <label id="operator"> </label>

    <label id="num2"> </label> <label id="e2"> </label>

    = <label id="answer">m </label>
</p>
<button onclick="F1()"> New </button>

推荐阅读