javascript - HTML、CSS、JavaScript 计算器

标签 javascript html css

我的计算器有问题。按钮工作并且全部对齐,但我无法在监视器盒上显示任何内容或计算任何内容。我在下面列出了我的代码,谁能帮我找到我哪里出错了?我觉得这与真假有关,但我想不通。

这是 HTML 代码:

<body>
<table>
<tr>
  <input id="display" type="text" value="0"/><span id="currOp"></span>
<tr>
  <td>
    <button id="7" class="num">7</button>
  </td>
  <td>
    <button id="8" class="num">8</button>
  </td>
  <td>
    <button id="9" class="num">9</button>
  </td>
  <td>
    <button id="plus" class="operator">+</button>
  </td>
  <td>
    <button id="clear">C</button>
  </td>
</tr>  
<tr>
  <td>
    <button id="4" class="num">4</button>
  </td>
  <td>
    <button id="5" class="num">5</button>
  </td>
  <td>
    <button id="6" class="num">6</button>
  </td>
  <td>
    <button id="minus" class="operator">-</button>
  </td>
  <td>
    <button id="root">√</button>
  </td>
</tr>
<tr>
  <td>
    <button id="1" class="num">1</button>
  </td>
  <td>
    <button id="2" class="num">2</button>
  </td>
  <td>
    <button id="3" class="num">3</button>
  </td>
  <td>
    <button id="mult" class="operator">x</button>
  </td>
  <td>
    <button id="power" class="operator">x^y</button>
  </td>
</tr>
<tr>
  <td>
    <button id="0" class="num">0</button>
  </td>
  <td>
    <button id="decimal">.</button>
  </td>
  <td>
    <button id="invert">±</button>
  </td>
  <td>
    <button id="divid" class="operator">÷</button>
  </td>
  <td>
    <button id="equals">=</button>
  </td>
</tr>

这是CSS代码:

button {
  height: 40px;
  width: 40px;
  font-size: 110%;
}
 #display{
font-size: 120%;
text-align: right;
}
span {
  font-size: 150%;
}

这是javascript代码:

    var isOperating = true;
    var isfloating = false;
    var toBeCleared = true;
    var operator;
    var operand;
    var display;

    $(document).ready(init);

    function init() {
      display = $('#display');
      $('.num').on('click', numClicked);
      $('.operator').on('click', operatorClicked);
      $('#invert').on('click', invertClicked);
      $('#root').on('click', rootClicked);
      $('#decimal').on('click', decimalClicked);
      $('#equals').on('click', equalsClicked);
      $('#clear').on('click', clearClicked);
    }
    function numClicked() {
      var currVal = display.val();
      var clickedNum = $(this).text();

      if (currVal === "0" || toBeCleared) {
      toBeCleared = true;
      display.val(clickedNum);
      } else {
       display.val(currVal + clickedNum);
      }
    }

    function invertClicked() {
      display.val(display.val() * -1);
    }
 function rootClicked() {
      display.val(Math.sqrt(evaluate()));
    }
 function decimalClicked() {
if (toBeCleared) {
    display.val('0.');
    toBeCleared = true;
  } else {
    if (!isFloating) {
      display.val(display.val().concat('.'));
    }
  }
      isFloating = false;
    }

    function equalsClicked() {
      display.val(evaluate());
      reset();
    }

    function clearClicked() {
      reset();
      display.val('0');
    }

    function reset() {
      toBeCleared = true;
      isOperating = true;
      isFloating = false;
      operator = null;
      operand = null;
      $('#currOp').text('');
    }

    function operatorClicked() {
      if (isOperating) {
        display.val(evaluate());
      }
      switch ($(this).attr('id')) {
        case 'plus':    operator = '+'; break;
        case 'minus':   operator = '-'; break;
        case 'mult':    operator = 'x'; break;
        case 'divide':  operator = '÷'; break;
        case 'power':   operator = '^'; break;
      }
      operand = parseFloat(display.val());
      isOperating = true;
      toBeCleared = true; 
      $('#currOp').text(operator);
    }



     function evaluate() {
       `enter code here` var currVal = parseFloat(display.val());
       var result;
         switch (operator) {
            case '+': result = operand + currVal; break;
            case '-': result = operand - currVal; break;
            case 'x': result = operand * currVal; break;
            case '÷':
              if (currVal === 0) {
                result = 'Err';
              } else {
                result = operand / currVal;
              }
              break;
            case '^': result = Math.pow(operand, currVal); break;
            default: result = currVal;
          }
          return result;
        }

最佳答案

您应该设置 toBeCleared = false;

if (currVal === "0" || toBeCleared) {
  toBeCleared = false; 
  display.val(clickedNum);
  } else {
   display.val(currVal + clickedNum);
  }

关于javascript - HTML、CSS、JavaScript 计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38442914/

相关文章:

javascript - 为什么平滑滚动不起作用?

Javascript Window.onbeforeunload 捕获触发事件的控件

html - 从图像制作梯形

html - 如何删除 css 中最后一个 child 的右边框

javascript - 在滚动溢出 div 中放置一个弹出窗口

php - 谷歌可视化 API php ajax

javascript - 循环中的 prompt() 从不显示 writeln() 内容

html - 当人们说静态文件是 .html、.js 等时,他们是不是犯了一个错误?

html - 无法更改主体的背景颜色

javascript - 如何使效果从上到下1页像android标题栏一样使用css3