簡體   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-2025 STACKOOM.COM