Hello, I am programming a web calculator with javaScript and what I want to achieve is that for example: when I add two values and I click on the minus sign, this first executes the pending sum (this is doing well), now when I enter another number and return to execute the minus sign must calculate the subtraction (what is happening is that it adds again). I am trying to control the functions with boolean variables but I see that it does not change the state of the variable. Next the code. You can help me with this because I do not see where my error is. Thanks
<body>
<table>
<tbody>
<tr>
<td colspan="4"><input id="display" name="display" disabled=""></td>
</tr>
<tr>
<td><button id="button1" value="1">1</button></td>
<td><button id="button2" value="2">2</button></td>
<td><button id="button3" value="3">3</button></td>
<td><button id="addButton">+</button></td>
</tr>
<tr>
<td><button id="button4" value="4">4</button></td>
<td><button id="button5" value="5">5</button></td>
<td><button id="button6" value="6">6</button></td>
<td><button id="subtractButton">-</button></td>
</tr>
<tr>
<td><button id="button7" value="7">7</button></td>
<td><button id="button8" value="8">8</button></td>
<td><button id="button9" value="9">9</button></td>
<td><button id="multiplyButton">*</button></td>
</tr>
<tr>
<td><button id="clearButton">C</button></td>
<td><button id="button0" value="0">0</button></td>
<td><button id="equalsButton">=</button></td>
<td><button id="divideButton">÷</button></td>
</tr>
</tbody>
</table>
var nunArray = []; //arreglo que almacena los resultados
var newArray = [];
var operation = false;
var suma = false;
var restar = false;
var result = 0;
var total = 0;
//---------Funciones Auxiliares---------------------
//Convertir a entero
var convertir = function arrayANumber(array){
var num = "0";
for(var i = 0; i < array.length; i++){
num += array[i];
}
return (parseInt(num));
}
//Funcion Suma
var sumaFuncion = function suma(){
total += convertir(newArray);
newArray.length = 0;
suma = false;
$('#display').val(total);
}
var restaFuncion = function resta(){
total -= convertir(newArray);
newArray.length = 0;
restar = false;
$('#display').val(total);
}
//----------Funciones de los Operadores------------------------
// Accion restar
$('#subtractButton').click(function(){
operation = true;
restar = true;
if(suma){//Aqui se activa la funcion suma se previamente fue invocada
sumaFuncion();
}else if(newArray.length) {//Aqui resta si ya fue ingresado el segundo
numero
restaFuncion();
}else if (nunArray.length){//Aqui se presiona la resta y se muestra el
primer valor ingresado
total = convertir(nunArray);
$('#display').val(total);
}
});
//Accion sumar
$('#addButton').click(function(){
operation = true;
suma = true;
if(newArray.length){//Aqui ejecuta la funcion cuando se ingresa el
segundo valor
sumaFuncion();
}else if (nunArray.length) {//Aqui ejecuta la funcion cuando se ingresa
el primer valor
total += convertir(nunArray);
nunArray.length = 0;
$('#display').val(total);
}else{//Aqui carga el valor total o acumulador cuando se da click por
segunda vez el boton
$('#display').val(total);
}
});
//---------------Programacion de Botones Numericos-----------------------
$('#button1').click(function(){
//probar la variable global newArray
if (operation == true) {
newArray.push($('#button1').val());
$('#display').val(newArray.join(""));
}else{
nunArray.push($('#button1').val());
$('#display').val(nunArray.join(""));
}
});
$('#button2').click(function(){
if (operation == true) {
newArray.push($('#button2').val());
$('#display').val(newArray.join(""));
}else{
nunArray.push($('#button2').val());
$('#display').val(nunArray.join(""));
}
});
$('#button3').click(function(){
if (operation == true) {
newArray.push($('#button3').val());
$('#display').val(newArray.join(""));
}else{
nunArray.push($('#button3').val());
$('#display').val(nunArray.join(""));
}
});
$('#button4').click(function(){
if (operation == true) {
newArray.push($('#button4').val());
$('#display').val(newArray.join(""));
}else{
nunArray.push($('#button4').val());
$('#display').val(nunArray.join(""));
}
});
$('#button5').click(function(){
if (operation == true) {
newArray.push($('#button5').val());
$('#display').val(newArray.join(""));
}else{
nunArray.push($('#button5').val());
$('#display').val(nunArray.join(""));
}
});
$('#button6').click(function(){
if (operation == true) {
newArray.push($('#button6').val());
$('#display').val(newArray.join(""));
}else{
nunArray.push($('#button6').val());
$('#display').val(nunArray.join(""));
}
});
$('#button7').click(function(){
if (operation == true) {
newArray.push($('#button7').val());
$('#display').val(newArray.join(""));
}else{
nunArray.push($('#button7').val());
$('#display').val(nunArray.join(""));
}
});
$('#button8').click(function(){
if (operation == true) {
newArray.push($('#button8').val());
$('#display').val(newArray.join(""));
}else{
nunArray.push($('#button8').val());
$('#display').val(nunArray.join(""));
}
});
$('#button9').click(function(){
if (operation == true) {
newArray.push($('#button9').val());
$('#display').val(newArray.join(""));
}else{
nunArray.push($('#button9').val());
$('#display').val(nunArray.join(""));
}
});
$('#button0').click(function(){
if (operation == true) {
newArray.push($('#button0').val());
$('#display').val(newArray.join(""));
}else{
nunArray.push($('#button0').val());
$('#display').val(nunArray.join(""));
}
});
//--------------Funcion de Los botones CLEAR e IGUAL------------------------
$('#clearButton').click(function(){
nunArray.length = 0;
newArray.length = 0;
operation = false;
suma = false;
multiplicar = false;
dividir = false;
restar = false;
total = 0;
$('#display').val("0");
});
//Accion igualar
$('#equalsButton').click(function(){
if(suma){
sumaFuncion();
}else if(restar){
restaFuncion();
} else{
$('#display').val(total);
}
});