簡體   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