Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Não calcula o imc

Bom dia,

Estou quase terminando o curso, mas decidi dar uma "recapitulada", e iniciar novamente apenas para praticar e memorizar as rotinas, porém quando vou realizar o calculo do IMC, me apresenta o seguinte erro:

Uncaught ReferenceError: valorImc is not defined
    at archive.js:31
(anonymous) @ archive.js:31

Até cheguei a comparar com o outro arquivo que já estava correto, mas não consegui identificar onde estou errando, alguém poderia me dar uma força?

Código que apresenta o erro:

var paciente         = document.querySelector("#primeiro");
var trPaciente         = paciente.querySelector(".paciente");
var tdNome             = paciente.querySelector(".info-nome");
var tdPeso             = paciente.querySelector(".info-peso");
var tdAltura         = paciente.querySelector(".info-altura");
var tdGordura         = paciente.querySelector(".info-gordura");
var tdImc             = paciente.querySelector(".info-imc");

var nome     = tdNome.textContent;
var peso     = tdPeso.textContent;
var altura     = tdAltura.textContent;
var gordura = tdGordura.textContent;
var imc     = tdImc.textContent;



console.log(nome);
console.log(peso);
console.log(altura);
console.log(gordura);


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

};
console.log(valorImc);

Código q não apresenta o erro:

var pacientes = document.querySelectorAll(".paciente");


for (var i = 0; i < pacientes.length; i++) {

    var paciente = pacientes[i];

    var tdPeso = paciente.querySelector(".info-peso");
    var peso = tdPeso.textContent;

    var tdAltura = paciente.querySelector(".info-altura");
    var altura = tdAltura.textContent;

    var tdImc = paciente.querySelector(".info-imc"); // coluna IMC

    var pesoValido = validaPeso(peso);
    var alturaValida = validaAltura(altura);

}


function calculaImc(peso,altura) {
    var imc = 0;
    imc = peso / (altura * altura);
    return imc.toFixed(2);
}

Agradeço, Igor

4 respostas

Fala Igor,

o erro está aqui:

console.log(valorImc);

A variável valorImc está sendo retornada pela função calculaImc, não pode ser acessada de fora da função, por isso o erro, para exibir seu valor altere para:

console.log(calculaImc(peso, altura));

No segundo código não deu erro, pois ao meno nesse que postou não tinha a instrução "console.log()".

Opa, então Leandro ... Mas só para que eu entenda o motivo, tipo ... isso é regra ? Não consigo pegar essa valor fora da função? Preciso retornar a função para q eu consiga pegar o valor? é isso? e o motivo disso seria o "return"?

Obrigado pela ajuda, abraços.

Olá, Igor O objetivo de uma função e criar um código reutilizável que pode, ou não, retornar um resultado. Sempre que ela devolve algum tipo de valor você precisa chamar o return, até porque nesse caso a variável valorImc só existe dentro de calculaImc.

solução!

Opa boa noite.

Obrigado pessoal, acho que já consegui solucionar aqui, agora só praticar mais kkk

abraços.