1
resposta

[Dúvida] Alguém pode me ajudar a corrigir o código?

//Crie uma função que calcule o índice de massa corporal (IMC) de uma pessoa, a partir de sua altura, 
// em metros, e peso, em quilogramas, que serão recebidos como parâmetro.

function exibirTexto(tag,texto){
    let campo = document.querySelector(tag);
    campo.innerHTML = texto;
}
function mensagemInicial(){
    exibirTexto("h1","Descubra Seu IMC!");
    exibirTexto("title","IMC");
}
mensagemInicial();
let imc = valorDoImc();
let peso;

function verificarPeso(){
    let peso = document.querySelector("input").value;
    peso.innerHTML = peso;
    console.log(peso);
}
    function verificarAltura(){
        let altura = document.querySelector("input").value;
        altura.innerHTML = altura;
        console.log(altura);
        resultadoImc();
    }
    function resultadoImc(){
        exibirTexto("h1",`Seu IMC é ${imc}`);
    }
    
    //Quando rodo o código dá erro nessa parte!!
        function valorDoImc(){
           return (peso)/(altura*altura);
        }

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Oi Mariiiiii...
Tudo bem?
Vamos por partes:
Você chama let imc = valorDoImc() antes mesmo de definir o valor de peso e altura.
Nesse ponto, peso e altura são undefined, então a função valorDoImc() retorna NaN ou dá erro, já que altura nem foi declarada no escopo global.

let imc = valorDoImc();

Você declara let peso no escopo global, mas dentro da função verificarPeso() usa novamente let peso, o que cria uma nova variável local, não alterando a global.
Além disso, a variável altura nem foi declarada no escopo global, e está sendo usada em valorDoImc() sem existir ainda, o que causa erro.
Na função:

peso.innerHTML = peso;

Isso não faz sentido.
peso é uma string obtida com .value do input.
Não é um elemento HTML, então você não pode usar .innerHTML.
Abaixo segue uma versão do seu codigo corrigido:

function exibirTexto(tag, texto) {
    let campo = document.querySelector(tag);
    campo.innerHTML = texto;
}

function mensagemInicial() {
    exibirTexto("h1", "Descubra Seu IMC!");
    exibirTexto("title", "IMC");
}

mensagemInicial();

// Variáveis globais para armazenar peso e altura
let peso;
let altura;

function verificarPeso() {
    peso = parseFloat(document.querySelector("#peso").value);
    console.log("Peso:", peso);
}

function verificarAltura() {
    altura = parseFloat(document.querySelector("#altura").value);
    console.log("Altura:", altura);
    resultadoImc();
}

function valorDoImc() {
    if (peso && altura) {
        return (peso / (altura * altura)).toFixed(2);
    } else {
        return "Dados inválidos";
    }
}

function resultadoImc() {
    let imc = valorDoImc();
    exibirTexto("h1", `Seu IMC é ${imc}`);
}

Compare os códigos e faça as mudanças necessarias.
Depois testa o código e envia os resultados.
Esses erros são comuns para quem está iniciando e com estudo e muita pratica voce fica fera.
Comente ai qualquer coisa.
Bons estudos.
Até...