繁体   English   中英

如何让 javascript 计算器中的加减函数正常工作?

[英]How can I get add and subtract functions in javascript calculator to work correctly?

我正在用 javascript 制作一个基本的计算器。 我的加法和乘法按钮运行良好。 但是,我的减法和除法函数不起作用。

当我单击减法时,由于某种我无法弄清楚的原因(我一直在挠头),它会自动将输出中的数字转换为负数。

对于除法,我似乎无法理解将我输入的第一个数字除以我输入的第二个数字的逻辑。

这是我的基本计算功能:

function calculate() {
    if (operator == 'add') {
        runningSum += windowNum;
    } else if (operator == 'subtract') {
        runningSum -= windowNum;  // automatically converts windowNum to negative, unclear why
    } else if (operator == 'multiply') {
        if (runningSum == 0) {
            runningSum = 1;
        }
        runningSum *= windowNum;
    } else if (operator == 'divide') {
        // ever mutation tried comes up with wrong result
    }

    outputWindow.textContent = Number((runningSum).toFixed(5));
    operatorClicked = true;
    numClicked = false;
    document.querySelector('#btnAdd').classList.remove('operatorClicked');
    console.log('windowNum: ' + windowNum);
    console.log('runningSum: ' + runningSum);
}

因为我的项目相当大,我在 codepen 中包含了它的链接: https ://codepen.io/CDLWebDev/pen/mdJgbeG

我检查了您的 codepen 并更改了一些内容。 主要是,每当单击操作标志时,您就在执行计算,这不是您真正想要做的事情,因为当您不知道接下来会出现什么数字时,您无法执行操作。 在计算器上,当您按下“等号”时,实际上会进行计算。

真正必须发生的事情以及我在下面的代码中所做的是保留您刚刚按下的数字作为 runningSum 并选择操作,然后当您按下等于时,您将获得所需的所有信息。

https://codepen.io/VPR/pen/poJBzXP

function clickOperatorBtn() {
if (numClicked) {
  if (target == document.querySelector("#btnDivide")) {
    operator = "divide";
    runningSum = windowNum;
    clearWindow();
  } else if (target == document.querySelector("#btnMultiply")) {
    operator = "multiply";
    runningSum = windowNum;
    clearWindow();
  } else if ...

我认为这是一个学习练习,所以坚持下去,但我认为你的代码背后的逻辑可以改进,当你完成后尝试谷歌搜索一些关于计算器的教程,你会发现很多指导你完成执行的步骤和背后的逻辑。

我尝试了您的代码,每次更改运算符时都会运行calculate函数。 这意味着,当最初单击“-”符号时,您将触发该功能。 跟我来:

else if (operator == 'subtract') {
    // windowNum == 3 - for example
    // runningSum == 0 
    runningSum -= windowNum;
    // result will be 0 - 3 == -3

这意味着如果你对 say, 7 做同样的事情。你会做 -3 - 7 == -10

关于除法:这也发生了,所以当你点击 8 然后除法时,你所做的是0 / 8 (显然结果是 1)。

希望这可以帮助!

暂无
暂无

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

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