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é...