Bom, vi que outros alunos chegaram a perguntar, mas talvez não haja uma solução definitiva. A minha dúvida é a seguinte:
Como podemos fazer com que o usuário ao digitar a altura dele e utilizando a vírgula (o que é bem comum no dia a dia quando nos referimos a ela) tenha essa sinalização revertida para o ponto de modo que o nosso resultado do IMC não apresente a falha NaN (not a number)?! Eu entendo o motivo da falha, mas não sei ajustar a conversão.
Em minhas pesquisas notei que uma atribuição chamada de .replace(" . " , " , ") pode ser inseria no cálculo tal qual o .toFixed(2). Bom, no meu caso eu inseri o replace no final do cálculo do IMC, no retorno dado pela função, e nada do ajuste ser feito! Pra ser sincero, inseri ele em diversos pontos do código, mas até agora não obtive sucesso na exibição do IMC.
Alguém com mais experiência tem outra solução? Ou sabe onde seria mais certo jogar essa atribuição?
var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutricionista";
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 tdGordura = paciente.querySelector(".info-gordura");
var gordura = tdGordura.textContent;
var tdImc = paciente.querySelector(".info-imc");
var pesoEhValido = true;
var alturaEhValida = true;
if (peso <= 0 || peso >= 1000) {
console.log("Peso inválido!");
pesoEhValido = false;
tdImc.textContent = "Peso inválido";
paciente.classList.add("paciente-invalido");
}
if (altura <= 0 || altura >= 3.00) {
console.log("Altura inválida!");
alturaEhValida = false;
tdImc.textContent = "Altura inválida";
paciente.classList.add("paciente-invalido");
}
if (pesoEhValido && alturaEhValida) {
var imc = calculaImc(peso, altura);
tdImc.textContent = imc;
}
}
function calculaImc(peso, altura) {
var imc = 0;
imc = peso / (altura * altura);
return imc.toFixed(2).replace(".", ",");
}