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.