2
respostas

main.js:10 Uncaught TypeError: Cannot read properties of undefined (reading 'querySelector')

Olá pessoal estou com esse problema mas não estou encontrando como arrumo ele, alguém consegue me ajudar?

O problema que gera no console é o titulo da minha pergunta

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 = true;
    var alturaValida = true;


    if(altura <= 0 || altura >= 3.00){
        console.log("altura invalida");
        tdimc.textContent = "Altura Inválida!";
        pesoValido = false;
        paciente.classList.add("paciente-invalido");
    }

    if(peso <= 0 || peso >= 1000){
        console.log("Peso invalido");
        tdimc.textContent = "Peso Inválido!";
        alturaValida = false;
        paciente.classList.add("paciente-invalido");
    }

    if (pesoValido && alturaValida){
        console.log("tudo validado");
        var imc = peso / (altura * altura);
        tdimc.textContent = imc.toFixed(2);
    }
}
2 respostas

Como não tenho seu html posso só especular, mas acho que esse erro aconteceu pq ele não achou um dos elementos referentes as classes que vc ta passando dentro do querySelector.

EX:

var tdpeso = paciente.querySelector(".info-peso");
// Se tdpeso for undefined essa linha vai quebrar
// undefined.textContent
var peso = tdpeso.textContent;

O que eu faria é botar um log nas variáveis dos querySelector console.log(tdpeso) e verificar o html se essas classes realmente estão em alguma tag.

Boa noite, Erick!

Seu código está muito organizado, parabéns! O único equívoco foi colocar o for com o menor ou igual - for(var i = 0; i <= pacientes.length; i++). O loop procura uma posição do array que não existe e retorna o erro. É só alterá-lo para :

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

Bons estudos!