简体   繁体   English

制作一个 JavaScript 计算器

[英]Making a JavaScript calculator

I'm trying to build a calculator on the web and I have problems with algebraic operations.我正在尝试在网络上构建一个计算器,但我在代数运算方面遇到了问题。

 //function for operations function risultato(arg) { var a = parseInt(document.getElementById('display').value); alert(a); var b = 4; somma(a, b); /*if(document.getElementById("x").value == "x") { moltiplicazione(a, b); }*/ } function somma(a,b) { document.getElementById("risultato").value = eval(a+b); var display = document.getElementById("display"); display.innerHTML = a+b; } function moltiplicazione(a,b) { document.getElementById("risultato").value = eval(a*b); var display = document.getElementById("display"); display.innerHTML = a*b; } function sottrazione(a,b) { document.getElementById("risultato").value = eval(ab); var display = document.getElementById("display"); display.innerHTML = ab; } function divisione(a,b) { document.getElementById("risultato").value = eval(a/b); var display = document.getElementById("display"); display.innerHTML = a/b; } //function for reset function reset() { var display = document.getElementById("display"); if (display.innerHTML != "AC" ) { display.innerHTML = 0; } } //function for digit number function digit(arg) { var display = document.getElementById("display"); if (display.innerHTML == 0 ) { if (arg.innerHTML != 0) { display.innerHTML = arg.innerHTML; } } else { display.innerHTML = parseInt(display.innerHTML)*10 + parseInt(arg.innerHTML); } }
 <div class="calculator" id="grid-snap"> <div class="display" id="display" > 0 </div> <div class="operator1" onClick="reset(this)"> AC </div> <div class="operator1"> +/- </div> <div class="operator1"> % </div> <div class="operator2" onclick="divisione()"> / </div> <div class="digit" onClick="digit(this);"> 7 </div> <div class="digit" onClick="digit(this);"> 8 </div> <div class="digit" onClick="digit(this);"> 9 </div> <div class="operator2" value="x" id="x" onclick="moltiplicazione()"> x </div> <div class="digit" onClick="digit(this);"> 4 </div> <div class="digit" onClick="digit(this);"> 5 </div> <div class="digit" onClick="digit(this);"> 6 </div> <div class="operator2" onclick="sottrazione()"> - </div> <div class="digit" value="1" onClick="digit(this);" id="1" > 1 </div> <div class="digit" onClick="digit(this);" id="2"> 2 </div> <div class="digit" onClick="digit(this);" > 3 </div> <div class="operator2" value="+" id="+" onclick="somma();" > + </div> <div class="digit big" onClick="digit(this);"> 0 </div> <div class="digit"> , </div> <div class="operator2" type="button" value="=" id="risultato" onclick="risultato();" > = </div> </div>

Regarding the writing of numbers and the cancellation I have no problems.关于数字的写入和取消,我没有问题。 Could someone give me some advice on how to do the operations?有人能给我一些关于如何进行操作的建议吗? thank you谢谢你

1) use input instead editable div (if you are the beginner) 1)使用输入代替可编辑的div(如果你是初学者)

2) add a variable that stores previous value called previous 2) 添加一个变量来存储先前的值,称为previous

3) numeric button should store it's value in variable called current 3) 数字按钮应将其值存储在名为current变量中

4) on operation button click just take previous & current and perform chosen operation on them 4)在操作按钮上点击只是取上一个和当前并对其执行选择的操作

5) pass exact numeric or operational value in your function doOperation('sum'), doOperation('divide') etc. enterDigit(1), enterDigit(5) etc. Instead of using this. 5) 在你的函数 doOperation('sum'), doOperation('divide') 等中传递精确的数字或​​操作值。 enterDigit(1), enterDigit(5) 等。而不是使用这个。 You anyway misuse it, passing exact values is simpler for the beginning.你无论如何都误用了它,一开始传递精确的值更简单。

sometimes you only need to enter value (digit entered), sometimes you need to calculate (if previous value exists and user clicks operation button)有时你只需要输入值(输入数字),有时你需要计算(如果以前的值存在并且用户点击操作按钮)

Sometimes only calculate (equal clicked)有时只计算(等于点击)

It seems you completely confused about what you are doing.看来你完全对自己在做什么感到困惑。 If you trying to evaluate operation in display which actually should only display previous input or previous result or current input not evaluate anything如果您尝试评估显示中的操作,实际上应该只显示先前的输入或先前的结果或当前的输入不评估任何内容

I would check existing tutorials better.我会更好地检查现有教程。 ex前任

PS: name your variables and functions in english PS:用英文命名你的变量和函数

PPS: You will definitely have problems with big numbers calculations. PPS:你肯定会遇到大数字计算的问题。 :) It's quite complex. :) 这是相当复杂的。 Read this if you are interested in http://2ality.com/2012/07/large-integers.html如果您对http://2ality.com/2012/07/large-integers.html感兴趣,请阅读此内容

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

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