繁体   English   中英

JS计算器错误

[英]JS calculator bug

PS 新来的 js,我在 js 中制作了一个类似 ios 的计算器,其中基本功能是用户输入存储在变量中的第一个数字,屏幕被清除,然后用户输入第二个数字,该数字再次需要存储在一个多变的。 我目前在存储第二个数字时遇到问题。


    const getnum = () => {
  let firstnum = parseFloat(ans.innerText);
  console.log("firstnum" + "=" + firstnum);
};

从互联网上复制这个以获得第二个数字

operationperf = (operation) => {
  if (!numinmem) {
    numinmem = parseFloat(ans.textContent);
    operatorinmem = operation;
    ans.textContent = "";
    return;
  }
  operatorinmem = operation;
  ans.textContent = getResultOfOperationAsStr();
  ans.textContent = "";
};

但这会导致两个变量具有相同的值,因此如果我执行 50+78 计算器执行 50+50

工作演示: https : //megahedron69.github.io/ios-Calculator/ javascript 文件:https ://github.com/Megahedron69/ios-Calculator/blob/main/app.js

首先,您的numinmem变量似乎没有在operationperf函数的范围之外用于任何进一步处理。

此外,在您的以下功能中:

const getResultOfOperationAsStr = () => {
  const currentValueNum = parseFloat(ans.textContent);
  const valueNumInMemory = parseFloat(ans.textContent);
  let newValueNum;
  if (operatorinmem === "addition") {
    newValueNum = valueNumInMemory + currentValueNum;
  } else if (operatorinmem === "subtraction") {
    newValueNum = valueNumInMemory - currentValueNum;
  } else if (operatorinmem === "multiplication") {
    newValueNum = valueNumInMemory * currentValueNum;
  } else if (operatorinmem === "division") {
    newValueNum = valueNumInMemory / currentValueNum;
  }
  return newValueNum.toString();
};

您似乎在操作的双方都使用ans变量中存储的元素的当前值(例如ansValueAsFloat + ansValueAsFloat ),因此会产生不希望的行为。

我的建议是将最终操作中涉及的任何变量设置为numinmem的值, numinmem设置为ans的当前值。

希望我说清楚了。

暂无
暂无

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

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