Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Type Error

Boa noite pessoal, estou com o seguinte erro:

principal.js:13 Uncaught TypeError: Cannot read property 'querySelector' of undefined at principal.js:13

Nao consigo entender o que está errado na linha 13!

aqui vai o Codigo:

``` var titulo = document.querySelector(".titulo"); titulo.textContent = "Aparecida Nutricionista"; //mudamos o titulo

var pacientes = document.querySelectorAll(".paciente");

for(i = 0 ; i <= pacientes.length ; i++) {

var paciente = pacientes[i]; //mostra quantos pacientes temos

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

var tdAltura = paciente.querySelector(".info-altura"); var altura = tdAltura.textContent; //passou em numero real

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 = peso / (altura * altura); tdImc.textContent = imc.toFixed(2); }

}

Desde ja agradeço imensamente a ajuda de todos. Grande abraço

2 respostas
solução!

Cara o erro é bem sutil, as listas no java script vao de 0 até length - 1. Dessa forma olhando pra seu problema olhamos o for

for(i = 0 ; i <= pacientes.length ; i++) {

O problema é no <=, pois estamos fazendo 0 até length e não 0 até length - 1

Deveremos ficar com

for(i = 0 ; i < pacientes.length ; i++) {

Muitissimo obrigado meu caro amigo!! Você me ajudou muito, abraçoo