2
respostas

Altura inválida, apesar de um número válido.

Mesmo com um número válido, meu código apresenta a mensagem de altura inválida. Não estou enxergando o erro. Além disso, com um número inválido na altura o paciente não é adicionado como deveria acontecer, mas a mensagem de altura inválida não aparece. O código:

function validaAltura(altura){
    if(altura >=0 && altura <=3,00){
        return true;
    }else{
        return false;
    }
}

function validaPeso(peso){
    if(peso >= 0 && peso <= 200){
        return true;
    }else{
        return false;
    }
}


function calculaImc(peso, altura){
    var imc = 0;
     imc = peso / (altura*altura);

    return imc.toFixed(2);
}

e

if(erros.length > 0){
       exibeMensagensDeErro(erros);
    }


    // adicionando o paciente na tabela
    tabela = document.querySelector("#tabela-pacientes");

    tabela.appendChild(pacienteTr); 

    form.reset();
});                                 

 function exibeMensagensDeErro(erros){
       var ul = document.querySelector("#mensagens-erro");

     erros.forEach(function(erro){

          var li = document.createElement("li");
          li.textContent = erro;
          ul.appendChild(li);
      });


   }


function obtemPacienteDoFormulario(form){

    var paciente = {
        nome: form.nome.value,
        peso: form.peso.value,
        altura: form.altura.value,
        gordura: form.gordura.value,
        imc: calculaImc(form.peso.value, form.altura.value)
    }
    return paciente;   
}

function montaTr(paciente){
    var pacienteTr = document.createElement("tr");
    pacienteTr.classList.add("paciente");

    pacienteTr.appendChild(montaTd(paciente.nome, "info-nome"));
    pacienteTr.appendChild(montaTd(paciente.peso, "info-peso"));                          
    pacienteTr.appendChild(montaTd(paciente.altura, "info-altura"));                      
    pacienteTr.appendChild(montaTd(paciente.gordura, "info-altura"));
    pacienteTr.appendChild(montaTd(paciente.imc, "info-imc"));


    return pacienteTr;
}


function montaTd(dado,classe){
    var td = document.createElement("td");
    td.textContent = dado;
    td.classList.add(classe);

    return td;
}



function validaPaciente(paciente){

     var erros = [];

    if (!validaPeso(paciente.peso)) {
       erros.push("Peso é inválido");
    } 

    if (validaAltura(paciente.altura)) {
        erros.push("Altura é inválida!");
    } 
 return erros;
}
2 respostas

Você precisa usar ponto ( . ) ao invés de virgula ( , ) quando for trabalhar com números decimais.

Apenas troque 3,00 por 3.00 na sua função validaAltura que vai funcionar

Putz, fiz isso e persiste o erro.