Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Usando funções, mas não funcionando

Estou tentando organizar funções para fazer o mesmo que foi passado nos vídeos mas de forma diferente. O console está dando "peso is not defined" nas funções verificador e calculaIMC. Alguem consegue me dar uma luz pq essas funções não conseguem puxar o valor do peso que guardei na const antes?

function bringData () {

    const pacienteum = document.querySelector("[data-primeiro-paciente]");

    const peso = pacienteum.querySelector("[data-info-peso]").textContent;

    const altura = pacienteum.querySelector("[data-info-altura]").textContent;


}

function verificador(){

    if(peso < 0 || peso > 200){
        podePeso = false;
        imcum.textContent = "Peso inválido";

    }

    if(altura < 0 || altura > 2.5){
        podeAltura = false;
        imcum.textContent = "Altura inválida";

    }

}

function calculaIMC(){

    bringData();
    verificador();

    if(podePeso && podeAltura){
        const imc = peso / (altura * altura);

        const imcum = pacienteum.querySelector("[data-imc]");

        imcum.textContent = imc;

    }




}

var podePeso = true;
var podeAltura = true;

titulo();

calculaIMC();
1 resposta
solução!

Olá Lucas, tudo bem?

Não esta funcionando da forma que você espera por conta do escopo das variáveis const que é local. Como sua variável está dentro da função ela só é valida para os blocos que estão internos a essa função (se fosse declarada no if por ex. só valeria dentro dele).

Uma forma de você manter seu código dessa forma seria passar as variaveis por parametro para a chamada da outra função.

function bringData () {

    const pacienteum = document.querySelector("[data-primeiro-paciente]");

    const peso = pacienteum.querySelector("[data-info-peso]").textContent;

    const altura = pacienteum.querySelector("[data-info-altura]").textContent;

    verificador(peso, altura);
}

function verificador(peso, altura){

    if(peso < 0 || peso > 200){
        podePeso = false;
        imcum.textContent = "Peso inválido";

    }

    if(altura < 0 || altura > 2.5){
        podeAltura = false;
        imcum.textContent = "Altura inválida";

    }

}

function calculaIMC(){

    bringData();

    if(podePeso && podeAltura){
        const imc = peso / (altura * altura);

        const imcum = pacienteum.querySelector("[data-imc]");

        imcum.textContent = imc;

    }




}

var podePeso = true;
var podeAltura = true;

titulo();

calculaIMC();

Ou, retornar da função bringData os valores do peso e da altura, atribuir a uma variável e, passar por parâmetro para a função verificador.

Boa sorte!