javascript 我有问题添加一个计算器,一个函数,得到动态的运营商

dbf7pr2w  于 2023-11-15  发布在  Java
关注(0)|答案(2)|浏览(107)

有人能帮我做一些JS基础知识吗?
我是一个新手,试图做一个计算器,得到屏幕上的值,将其存储在一个名为previousValue的变量中,然后计算器显示设置干净,你数字化新的数字,然后当你点击equals时,它存储在currentValue变量中,然后,与以前和当前值的操作发生,并出现在显示屏上。问题是,我不知道如何设置操作符动态equals函数,它应该通过获取previousValue并使用currentValue进行操作来工作,操作符是什么,如果我试图改变事情并为每个operatorButton. text执行操作的内容存储在变量中,那么当equals()被调用时,只是在显示器上打印这个变量。
事情对我来说变得更糟了,因为我也无法找到一种方法来将函数放置在de swicth case中,
获取PreviousNumber(一个获取显示器上设置的数字并将其清理为新数字的函数),然后等待直到我数字新数字以执行currentNumber函数(如果operator!= null,则仅获取屏幕中设置的数字)
我不知道我是否把事情说清楚了,如果我没有,对不起,让我知道在awnsers
这是我到目前为止所做的代码(https://github.com/DanielRKlein/calculator-js
我在上面已经解释过了

wwtsj6pe

wwtsj6pe1#

我知道你使用switch来执行数学运算,但是如果你可以合并#previousOperationText#currentOperationText的文本内容,并将其作为参数传递给JS内置的eval函数;示例

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Eval Method</h2>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = eval("4/2");
</script>

</body>
</html>

字符串
x1c 0d1x的数据

goqiplq2

goqiplq22#

您可以使用JS对象来存储数据,然后使用新数据和选定的运算符后使用它。下面是简单计算的草稿示例,因此您可以获得大致的想法。检查内联评论并通过单击Run code snippet尝试演示:

// Display
const disp = document.getElementById("disp");

// Object to store data
let data = {};

// Math operators functions object
const op = {
  '+': (a, b) => a + b,
  '-': (a, b) => a - b,
  '*': (a, b) => a * b,
  '/': (a, b) => a / b
};

// Calculator function
const calc = v => {
  // Get current value from disp
  let cv = disp.innerText;
  
  //
  // If numbers or dot button pressed,
  // add to disp.
  if(/[\d\.]/.test(v)) {
    // Clear current disp if clear flag is set
    // We need this to run once to start
    // typing second number for math operation
    if(data.clear) {
      delete data.clear;
      cv = 0;
    }
    
    // If current value on display is 0,
    // and input button not dot (.), then
    // remove 0 from disp
    if(cv == '0' && v != '.') cv = '';
    
    // Remove dot if already presented
    if(/\./.test(cv) && v == '.') v = '';
    
    // Inner to display
    disp.innerText = `${cv}${v}`;
  }
  
  //
  // If math operator button is pressed,
  // copy display value and math operator,
  // and set flag to clear disp on next digit input
  if(/[\+\-\*\/]/.test(v)) {
    data.value = cv;
    data.operator = v;
    data.clear = true;
  }
  
  //
  // If = button pressed, check data object
  // for first number and math operator and calculate
  if(/\=/.test(v) && data.value && data.operator) {
    // Calculate with math operators functions object
    // We use math operator as object key, first
    // saved number and current number on display
    // as function parameters. Then inner to display
    disp.innerText = op[data.operator](Number(data.value), Number(cv));

    // Clear data object
    data = {};
  }
  
  //
  // If clear button is pressed, then clear
  // data object and put 0 in to the display
  if(/C/.test(v)) {
    // Clear data object
    data = {};
    
    // Put 0 in to the display
    disp.innerText = 0;
  }
}
div {
  font-size: 18px;
  margin-bottom: 12px;
}
button {
  width: 24px;
  margin-bottom: 4px;
}
<div id="disp">0</div>

<button onclick="calc(1)">1</button>
<button onclick="calc(2)">2</button>
<button onclick="calc(3)">3</button>
<button onclick="calc('/')">÷</button>
<br>
<button onclick="calc(4)">4</button>
<button onclick="calc(5)">5</button>
<button onclick="calc(6)">6</button>
<button onclick="calc('*')">×</button>
<br>
<button onclick="calc(7)">7</button>
<button onclick="calc(8)">8</button>
<button onclick="calc(9)">9</button>
<button onclick="calc('-')">−</button>
<br>
<button onclick="calc(0)">0</button>
<button onclick="calc('.')">.</button>
<button onclick="calc('=')">=</button>
<button onclick="calc('+')">+</button>
<br>
<button onclick="calc('C')">C</button>

相关问题