简体   繁体   English

如何在计算器中使用 CE 密钥?

[英]How can I use a CE key in a calculator?

I'm making a calculator like the Windows calculator, and have completed it, the only thing I cannot do is make the CE button usable.我正在制作一个类似于 Windows 计算器的计算器,并且已经完成,唯一不能做的就是让 CE 按钮可用。 I want the CE button to delete the last equation you entered, eg.我希望 CE 按钮删除您输入的最后一个方程,例如。 if you enter like 78-89*90, it will delete the *90 only.如果您输入 78-89*90,它只会删除 *90。

Here is the javascript code I have:这是我拥有的javascript代码:

var display = document.getElementById("screen");
var buttons = document.getElementsByClassName("button");
  
  Array.prototype.forEach.call(buttons, function(button) {
  button.addEventListener("click", function() {
    if (button.textContent != "=" && 
        button.textContent != "C" && 
        button.textContent != "x" && 
        button.textContent != "÷" && 
        button.textContent != "√" && 
        button.textContent != "x ²" && 
        button.textContent != "%" && 
        button.textContent != "⌫" &&
        button.textContent != "1/x" &&
        button.textContent != "CE" &&
        button.textContent != "±") {
      display.value += button.textContent;
    } else if (button.textContent === "=") {
      equals();
    } else if (button.textContent === "C") {
      clear();
    } else if (button.textContent === "x") {
      multiply();
    } else if (button.textContent === "÷") {
      divide();
    } else if (button.textContent === "±") {
      plusMinus();
    } else if (button.textContent === "⌫") {
      backspace();
    } else if (button.textContent === "%") {
      percent();
    } else if (button.textContent === "x ²") {
      square();
    } else if (button.textContent === "√") {
      squareRoot();
    } else if (button.textContent === "1/x") {
      divide1();
    } else if (button.textContent === "CE") {
      clearone();
    }
  });
});


function syntaxError() {
  if (eval(display.value) == SyntaxError || eval(display.value) == ReferenceError || eval(display.value) == TypeError) {
    display.value == "Syntax Error";
  }
}


function equals() {
  if ((display.value).indexOf("^") > -1) {
    var base = (display.value).slice(0, (display.value).indexOf("^"));
    var exponent = (display.value).slice((display.value).indexOf("^") + 1);
    display.value = eval("Math.pow(" + base + "," + exponent + ")");
  } else {
    display.value = eval(display.value)
    checkLength()
    syntaxError()
  }
}

function clear() {
  display.value = "";
}

function backspace() {
  display.value = display.value.substring(0, display.value.length - 1);
}

function multiply() {
  display.value += "*";
}

function divide() {
  display.value +=  "/";
}

function plusMinus() {
  if (display.value.charAt(0) === "-") {
    display.value = display.value.slice(1);
  } else {
    display.value = "-" + display.value;
  }
}

function square() {
  display.value = eval(display.value * display.value);
}

function squareRoot() {
  display.value = Math.sqrt(display.value);
}

function percent() {
  display.value = display.value / 100;
}

function divide1() {
  display.value = 1 / display.value;
}

I need to make a function called clearone that as said before, cleans the last equation you entered.我需要创建一个名为clearone的函数,如前所述,清除您输入的最后一个方程。

Thanks in advance.提前致谢。

Just split the values and check one by one and remove the value if it's a number and break the loop when is not a number.只需拆分值并一一检查,如果它是数字则删除该值,并在不是数字时打破循环。

 function clearone(){ let v = '78-89*90'.split(''); let ar = [0,1,2,3,4,5,6,7,8,9]; for(a of v){ let index = ar.indexOf(parseInt(a)); if(index == -1){ v.pop(); v= v.join(""); console.log(v); break; }else{ v.pop(); } } } clearone();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM