【问题标题】:How to display the calculation result in the input field in jQuery?jQuery如何在输入字段中显示计算结果?
【发布时间】:2019-02-03 16:47:10
【问题描述】:

我正在构建一个计算器。单击按钮时,我可以在输入字段中显示输入值,但是当<button id="equals">

<button id="equalsButton" class="operator" value="=">=</button></td>

单击的结果值是附加的替换它的实例。比如点击了9、+、9、=

输入栏显示输入值:9+918=

输入字段:

<input id="display" name="display" disabled></input>

我的脚本:

  $(document).ready(function() {
    var num1 = '';
    var num2 = '';

    var operator = '';
    var total = '';

    $('button').on('click', function(e) {
        var btn = e.target.innerHTML;

        if (btn >= '0' && btn <= '9') {
          handleNumber(btn);
          console.log('number');
        } else {
          handleOperator(btn);
          console.log('operator');
        }
    });

    function handleNumber(num) {
      if (num1 == '') {
          num1 = num;
        } else {
          num2 = num;
        }
        displayButton(num);
    }

    function handleOperator(op) {
      if (operator == '') {
          operator = op;
        } else {
          handleTotal();
          operator = op;
        }
        displayButton(op);
    }

    function handleTotal() {
        switch (operator) {
            case '+':
                total = +num1 + +num2; // Use + before variable to convert string to number
                displayButton(total);
                break;
            case '-':
                total = +num1 - +num2; // Use + before variable to convert string to number
                displayButton(total);
                break;
                ...
                ...
                ...

        }
        updateVariables();
    }

    function displayButton(btn) {
      $('#display').val($('#display').val() + btn);
    }

    function updateVariables() {
      num1 = total;
      num2 = '';
    }


      $('#clearButton').on('click', function() {
        var clear = $('#display').val('');
      });

});

这是我遇到的最后一个问题。如果您在当前问题旁边看到其他错误,我几乎完成了该项目,请提出建议,非常感谢您的帮助!

提前谢谢你!

【问题讨论】:

标签: javascript jquery dom input


【解决方案1】:

解决方案可能是 showResult 的额外功能和 handleOperator 的更改(最后一行):

  $(document).ready(function() {
    var num1 = '';
    var num2 = '';

    var operator = '';
    var total = '';

    $('button').on('click', function(e) {
      var btn = e.target.innerHTML;

      if (btn >= '0' && btn <= '9') {
        handleNumber(btn);
        console.log('number');
      } else {
        handleOperator(btn);
        console.log('operator');
      }
    });

    function handleNumber(num) {
      if (num1 == '') {
        num1 = num;
      } else {
        num2 = num;
      }
      displayButton(num);
    }

      function handleOperator(op) {
      if (operator == '') {
        operator = op;
      } else {
        handleTotal();
        operator = op;
      }
      if (op != '=') { displayButton(op); }
    }

    function handleTotal() {
      switch (operator) {
        case '+':
          total = parseInt(num1) + parseInt(num2);
          showResultOnButton(total);
          break;
        case '-':
          total = parseInt(num1) - parseInt(num2);
          showResultOnButton(total);
          break;
        case '/':
          total = parseInt(num1) / parseInt(num2);
          showResultOnButton(total);
          break;
        case '*':
          total = parseInt(num1) * parseInt(num2);
          showResultOnButton(total);
          break;
      }
      updateVariables();
    }

    function displayButton(btn) {
      $('#display').val($('#display').val() + btn);
    }

    function showResultOnButton(btn) {
      $('#display').val(btn);
    }

    function updateVariables() {
      num1 = total;
      num2 = '';
    }


    $('#clearButton').on('click', function() {
      $('#display').val('');
    });

  });

【讨论】:

  • 返回NaN
  • 是的,……像 '9+9' 不能转换为 int。用 showResultOnButton 看看新的解决方案。
  • 它显示了第一个计算结果,后面有一个= 符号,就像9+9=。结果18= 此外,如果您继续使用它,它将显示NaN 此处的代码链接。 jsfiddle.net/krittiyaclark/v9cdont3/7
  • 删除“displayButton(op);”行在句柄运算符(操作)中。 displayButton 进行字符串连接!在这种情况下,“+”不会添加两个数字,它会将第二部分附加到第一部分。当handleOperator 给数字加上一个“=”字符时,它就不再是数字了,因为它是一个字符串,不能转换。最好初始化 num1, num2 = 0 而不是 '',所以它们是数字。并在 updateVariables 中设置 num2 = 0 而不是 ''。
  • 它不能正常工作。看来我的脚本运行有点奇怪。
猜你喜欢
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2014-10-21
  • 2013-03-16
  • 2016-10-28
相关资源
最近更新 更多