GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Erro no botão de uma calculadora Javascript

Tags: #<Tag:0x00007f0a8b03b690>

Estou construindo uma calculadora afins de aprendizado, e quando o usuario faz uma operação e aciona o botão resultado, o resultado do calculo deveria aparecer no input “tela”, porém não acontece nada no input fica apenas o calculo realizado pelo usuario sem resposta.

aqui está o meu arquivo Javascript.
`document.addEventListener(“DOMContentLoaded”, function(){

//Botões da calculadora.
document.getElementById("bot0").addEventListener("click", bot0);
document.getElementById("bot1").addEventListener("click", bot1);
document.getElementById("bot2").addEventListener("click", bot2);
document.getElementById("bot3").addEventListener("click", bot3);
document.getElementById("bot4").addEventListener("click", bot4);
document.getElementById("bot5").addEventListener("click", bot5);
document.getElementById("bot6").addEventListener("click", bot6);
document.getElementById("bot7").addEventListener("click", bot7);
document.getElementById("bot8").addEventListener("click", bot8);
document.getElementById("bot9").addEventListener("click", bot9);
document.getElementById("botPonto").addEventListener("click", botPonto);

//Botões operdores da calculadora.
document.getElementById("botMais").addEventListener("click", botMais);
document.getElementById("botMenos").addEventListener("click", botMenos);
document.getElementById("botVezes").addEventListener("click", botVezes);
document.getElementById("botDividir").addEventListener("click", botDividir);
document.getElementById("botResult").addEventListener("click", botResult);

//Botões Apagar.
document.getElementById("botLimparTudo").addEventListener("click", botLimparTudo);
document.getElementById("botLimUltimo").addEventListener("click", botLimUltimo);

 //Objeto para manter controle dos dados e função para calcular.
 let calcular = {
    primeiroValor : 0,
    segundoValor : 0,
    funcaoOperador : null
};

//funções de excluir.
function botLimUltimo(){
    var strng = document.getElementById("tela").value;
    document.getElementById("tela").value = strng.substring(0, strng.lenght-1);
};
function botLimparTudo(){
    document.getElementById("tela").value="";
    calculo.primeiroValor = 0;
    calculo.segundoValor = 0;
    calculo.funcaoOperador = null;
};

//Definindo a função dos números.
function bot0(){
    let atual = document.getElementById("tela").value+=0;
};
function bot1(){
    let atual = document.getElementById("tela").value+=1;
};
function bot2(){
    let atual = document.getElementById("tela").value+=2;
};
function bot3(){
    let atual = document.getElementById("tela").value+=3;
};
function bot4(){
    let atual = document.getElementById("tela").value+=4;
};
function bot5(){
    let atual = document.getElementById("tela").value+=5;
};
function bot6(){
    let atual = document.getElementById("tela").value+=6;
};
function bot7(){
    let atual = document.getElementById("tela").value+=7;
};
function bot8(){
    let atual = document.getElementById("tela").value+=8;
};
function bot9(){
    let atual = document.getElementById("tela").value+=9;
};

function botPonto(){
    let atual = document.getElementById("tela").value+=".";
};

//Definindo botôes de operações básicas.
function botMais(){
    atual = document.getElementById("tela").value;
    if(atual == 0){
        alert("Digite os valores primeiro !");
    }else{
        atual = document.getElementById("tela").value += "+";
    }
};
function botMenos(){
    atual = document.getElementById("tela").value;
    if(atual == 0){
        alert("Digite os valores primeiro !");
    }else{
        atual = document.getElementById("tela").value += "-";
    }
};
function botVezes(){
    atual = document.getElementById("tela").value;
    if(atual == 0){
        alert("Digite os valores primeiro !");
    }else{
        atual = document.getElementById("tela").value += "*";
    }
};
function botDividir(){
    atual = document.getElementById("tela").value;
    if(atual == 0){
        alert("Digite os valores primeiro !");
    }else{
        atual = document.getElementById("tela").value += "/";
    }
};

//função definindo operações
function somarValores (primeiroValor, segundoValor){
    return primeiroValor + segundoValor;
};
function subtrairValores(primeiroValor, segundoValor){
    return primeiroValor - segundoValor;
};
function multiplicarValores(primeiroValor, segundoValor){
    return primeiroValor * segundoValor;
};
function dividirValores(primeiroValor, segundoValor){
    if(segundoValor == 0){
        return "Erro, divisão por zero !";
    }else{
        return primeiroValor / segundoValor;
    }

};

//função que atribuui a operação correta do objeto
function atribuirOperacao (operador) {
    if(operador == "+"){
        calculo.funcaoOperador = somarValores;
    } else if(operador == "-"){
        calculo.funcaoOperador = subtrairValores;
    } else if(operador == "*"){
        calculo.funcaoOperador = multiplicarValores;
    } else {
        calculo.funcaoOperador = dividirValores;
    }
};

let calculo = {
    valorSalvo : null,
    funcaoOperador : null
};

//Dando função para o botão resultado.
function botResult(){
    if(!isNaN(tela.value) && calculo.funcaoOperador != null){
        let result = calculo.funcaoOperador(calculo.valorSalvo, Number(tela.value));

        tela.value = result;
        calculo.valorSalvo = result;

        calculo.funcaoOperador = null;
    }
};

});`

Pelo menos debuga pra ser mais específico.

Debugar o código passo a passo até chegar no ponto do código que não continua como o esperado.

//