按“=”后清除 javascript 计算器中的显示

clearing the display in a javascript calculator after pressing "="

我是编码新手,我构建了一个 Javascript 计算器,但我在完成一次计算后无法清除显示。相反,第一次计算的结果进入第二次计算的输入。例如,如果我执行 3+5,它会给我 8,但如果我随后按 4,显示屏显示 84,这就是问题所在。我可以通过清除按钮清除屏幕,但每次计算后都会变得乏味。谢谢。

//select all the buttons
const buttons = document.querySelectorAll('button');

//select the <input type="text" class+"display" disabled> element
const display = document.querySelector('.display');

//add eventListener to each button
buttons.forEach(function(button) {
button.addEventListener('click',calculate);
});

//calculate function
   function calculate(event) {
   //current clicked buttons value
   var clickedButtonValue = event.target.value;

   if(clickedButtonValue === '=') {

       //check if the display is not empty then only do the calculation
       if(display.value !== "") {

           //calculate and show the answer to display
           display.value = eval(display.value);
       }

       //if any key except "=" pressed again clear display
       button.addEventListener('click',clearDisplay);

   } else if (clickedButtonValue === 'C') {

       //clear everything on display
       display.value = "";

   } else {

       //otherwise concatenate it to the display
       display.value += clickedButtonValue;
   }
}

function clearDisplay(clickedButtonValue) {
    if(clickedButtonValue !== "=") {
        display.value = "";
    }
}

您可以拥有一个跟踪计算状态的变量。若已计算,则清除显示,重新设置状态

var calculated = false;

function calculate( event ){
    var clickedButtonValue = event.target.value;

    if ( calculated ) {
        display.value = "";

        calculated = false;
    }

    if(clickedButtonValue === '=') {
        if(display.value !== "") {

            //calculate and show the answer to display
            display.value = eval(display.value);

            calculated = true;
        }
    }
    // the rest of your logic here
}