Não entendi porque a negação na condição. Se pesoEhValido e alturaEhValido forem true, é calculado o IMC normalmente. Porém se alguma delas for false, a condição de peso inválido ou altura inválida não deveria ser executada normalmente? Por que a negação?
Então, em calcula-imc.js, vamos criar a função validaPeso, que receberá um peso por parâmetro e retornará true se o peso estiver entre 0 e 1000, se não estiver o retorno será false:
// calcula-imc.js
function validaPeso(peso) {
if (peso >= 0 && peso <= 1000) {
return true;
} else {
return false;
}
}
Do mesmo jeito vamos criar a função validaAltura:
// calcula-imc.js
function validaAltura(altura) {
if (altura >= 0 && altura <= 3.00) {
return true;
} else {
return false;
}
}
Agora, ao invés de inicializarmos as variáveis pesoEhValido e alturaEhValida com true, vamos chamar as suas respectivas funções, que retornarão se os dados são ou não válidos:
// calcula-imc.js
var pesoEhValido = validaPeso(peso);
var alturaEhValida = validaAltura(altura);
E na hora de testar, vamos utilizar as variáveis também. Só que estamos testando se o peso ou a altura não são válidos. Então vamos utilizar o operador de negação (representado por um ponto de exclamação) à frente da variável:
// calcula-imc.js
if (!pesoEhValido) {
console.log("Peso inválido!");
pesoEhValido = false;
tdImc.textContent = "Peso inválido";
paciente.classList.add("paciente-invalido");
}
if (!alturaEhValida) {
console.log("Altura inválida!");
alturaEhValida = false;
tdImc.textContent = "Altura inválida";
paciente.classList.add("paciente-invalido");
}
Agora, com essas duas funções criadas, podemos chamá-las na função validaPaciente, em form.js.