1
resposta

A tabela toda é mostrada como invalida

Feita a alteração dos if's em uma funtion, acontece que mesmo sem estar fora daqueles valores de true or false é mudado a tabela inteira e fica como invalida.

var titulo = document.querySelector(".titulo");

console.log(titulo.textContent);
titulo.textContent = "Aparecida Nutricionista";

    function imc(paciente, peso, altura) {

    var paciente = document.querySelector("paciente");

    var tdPeso = paciente.querySelector(".info-peso");
    var peso = tdPeso.textContent;

    var tdAltura = paciente.querySelector(".info-altura");
    var altura = tdAltura.textContent;

    }

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 tdImc = paciente.querySelector(".info-imc");

    var pesoValido = validaPeso(peso); // contém true or false
    var alturaValida = validaAltura(altura);

    if(!pesoValido) {}
        tdImc.textContent = ("peso inválido");
        pesoValido = false;
        paciente.classList.add("paciente-invalido");

    }

    if(!alturaValida) {
        tdImc.textContent = ('altura inválida');
        alturaValida = false;

        paciente.classList.add("paciente-invalido");

    }

    if(pesoValido && alturaValida) {
        var imc = calculaImc(peso,altura);
        tdImc.textContent = imc;
    }

function validaPeso(peso) {
    if(peso >= 0 && peso < 1000) {
        return true;
    }else {
        return false;
    }
}

function validaAltura(altura) {
    if(altura >= 0 && altura <= 3.00) {
        return true; 
    }else {
        return false;
    }
}

function calculaImc(peso, altura) {
    var imc = 0;
    imc = peso / (altura * altura);
    return imc.toFixed(2);
}

Em que parte está errado, pois mesmo no console não mostra erro nenhum

1 resposta

Fala Ligia, tudo bem?

Na linha 34 do seu código, na verificação, o conteúdo do código que define se vai aparecer o texto de invalido ou não, esta fora o escopo da verificação, ou seja, irá aplicar o texto mesmo se o peso for válido, veja:

Para corrigir basta passar o código para dentro do escopo do if:

Após isso, tudo funcionará perfeitamente.

Espero ter ajudado, bons estudos :D