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

110
Vistas
La subcadena en JavaScript corta más de lo que debería

Soy bastante nuevo en JavaScript, pero hoy me topé con un problema extraño que realmente agradecería si alguien pudiera arrojarme algo de luz.

Estoy trabajando en una calculadora en HTML. Tengo una función en js que uso para un evento onclick en un div. Ese div funciona como un botón de retroceso con el siguiente código:

 function remove() { var input = document.getElementById("input"); input.innerHTML = input.innerHTML.substring(0, input.innerText.length - 1); // Check if comma exists if (input.innerHTML.indexOf(",") == -1) { comma = false; } }

Elimina el último número agregado del HTML interno de mi párrafo, como debería. Sin embargo, hacer exactamente lo mismo en la siguiente función elimina de alguna manera dos caracteres del párrafo en lugar de uno:

 function buttonOperator(operator) { var input = document.getElementById("input"); var calc = document.getElementById("calculation"); // Make sure new number isn't empty and fits into the calculation if (input.innerHTML != "") { // Bunch of code } else { // This line removes two characters instead of one calc.innerHTML = calc.innerHTML.substring(0, calc.innerText.length - 1); operators.pop(); switch (operator) { case "÷": calc.innerHTML += "÷"; operators.push("÷"); break; case "×": calc.innerHTML += "×"; operators.push("×"); break; case "−": calc.innerHTML += "−"; operators.push("−"); break; case "+": calc.innerHTML += "+"; operators.push("+"); break; } } input.innerHTML = ""; comma = false; }

El propósito de la función es eliminar el operador ya existente al final del párrafo y reemplazarlo por uno nuevo. Pero al eliminar el último carácter de la misma manera que lo hice en mi función de eliminación, de alguna manera se eliminan dos caracteres.

Si tengo:

 98 +

Pulsando, por ejemplo, más de nuevo saldría lo siguiente:

 98+

Y otra vez:

 9+

etc.

Realmente no entiendo cómo puede suceder esto. Si alguien pudiera explicarme para futuras referencias, se lo agradecería mucho.

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