Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

133
Vistas
Calculadora: problema con operaciones de múltiples dígitos/operadores

Novato aquí, estoy atascado con mi proyecto de Calculadora y no puedo continuar. Hay algo mal con mi código y no puedo averiguar qué.

Entonces, el problema involucra operaciones en números de varios dígitos (por ejemplo, 22), así como multiplicar / dividir después de sumar / deducir.

Anteriormente estaba luchando con múltiples operaciones en general, pero parece que ahora funciona (aunque solo con números de 1 dígito). Cada vez que inserto, por ejemplo, 23, la función asigna 23 al primer y segundo operandos y me da 46.

Lo mismo sucede cuando uso un operador en la segunda operación que es diferente al que usé en la primera operación (por ejemplo, si uso el operador de suma dos veces y luego deduzco, mi resultado será cero ya que el resultado se asigna a ambos operandos y continúa con la operación).

¿Alguien podría aconsejarme cuál es el problema con este código? Creo que es por la variable "operando1". El comportamiento esperado sería que la función se detuviera después de cada clic, pero tan pronto como el valor del operando 1 cambie a "vacío" nuevamente, el código continúa. Traté de anular esto, pero nada de lo que se me ocurre funciona, siento que me estoy perdiendo algo básico.

¡Gracias por adelantado!

 let add = (a, b) => a + b; let subtract = (a, b) => a - b; let multiply = (a, b) => a * b; let divide = (a, b) => a / b; function operate(operator, a, b) { if (operator === '+') { return add(a, b); } else if (operator === '-') { return subtract(a, b); } else if (operator === '*') { return multiply(a, b); } else { return divide(a, b); } }; const display = document.querySelector("h1"); // display const numButtons = document.querySelectorAll(".num"); // 0 - 9 const operateButtons = document.querySelectorAll(".operator"); // +, -, *, / const equals = document.querySelector('#equals') // = const clearBtn = document.querySelector('#clear'); // AC let displayValue = []; // add clicked numbers to array let displayNumbers; // joined array let operations = ['a','operator','b']; let operand1 = "empty"; // value that shows if 1st num has already been selected numButtons.forEach((button) => { button.addEventListener('click', function() { displayValue.push(this.innerText); displayNumbers = displayValue.join(""); display.textContent = displayNumbers; operateButtons.forEach((button) => { button.addEventListener('click', function insertOperand() { if(operand1 === "empty") { operations[0] = Number(displayNumbers); operations[1] = this.textContent; displayValue = []; operand1 = "inserted"; } else if (operand1 === "inserted") { operations[2] = Number(displayNumbers); result = operate(operations[1],operations[0],operations[2]); display.textContent = result; displayNumbers = result; displayValue = []; operand1 = "empty"; button.removeEventListener('click',insertOperand); } }); }); }); });
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda