Olá, tudo bem?!
É o seguinte, quero que ele só fique em vermelho o imc quando der algum resultado inválido.Até esse ponto eu consegui.
O problema que está ocorrendo é que quando da algum valor incorreto ele só põe de vermelho o primeiro imc.
o código do instrutor é o seguinte:
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 alturaEValida = true;
  var pesoEValido = true;
  if (peso <= 0 || peso > 1000) {
    tdImc.textContent = "Peso inválido!"
    pesoEValido = false;
    paciente.classList.add("paciente-invalido");
  }
  if (altura <= 0 || altura > 1000) {
      tdImc.textContent = "Altura inválida!";
      alturaEValida = false;
      paciente.classList.add("paciente-invalido");
  }
  if (pesoEValido && alturaEValida) {
    var imc = peso / (altura * altura);
    tdImc.textContent = imc.toFixed(1);
  }
}
Ao fazer esse código se algum peso, ou altura não estiver nos conformes, seleciona toda a linha, nome, peso, atura,etc. E à pinta de vermelho.
sabendo disso fiz mais específico, criei meu código assim:
var pacientes = document.querySelectorAll(".paciente");
var invalido = document.querySelector(".info-imc");
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 alturaEValida = true;
  var pesoEValido = true;
  if (peso <= 0 || peso > 1000) {
    tdImc.textContent = "Peso inválido!"
    pesoEValido = false;
    invalido.classList.add("paciente-invalido");
  }
  if (altura <= 0 || altura > 1000) {
      tdImc.textContent = "Altura inválida!";
      alturaEValida = false;
      invalido.classList.add("paciente-invalido");
  }
  if (pesoEValido && alturaEValida) {
    var imc = peso / (altura * altura);
    tdImc.textContent = imc.toFixed(1);
  }
}
com esse código acima, só coloca de vermelho o primeiro Imc, independente se é a altura ou o peso errado, ou ainda se é o ultimo paciente ao invés do primeiro.
Pensei em fazer um for para ele ir de paciente em paciente conferindo, não deu certo. Pelo menos o método que tentei.
Poderiam me ajudar?