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

Aula 3 - Exercicio 1

O código funciona, entretanto recebo a seguinte mensagem:

var tdPeso = paciente.querySelector(".info-peso"); Uncaught TypeError: Cannot read property 'querySelector' of undefined

Alguém conhece esse erro?

Leonardo Feijó


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

    if (peso <= 0 || peso >= 1000) {
        ehPesoValido = false;
        tdImc.textContent = "Peso inválido";
    }

    if (altura <= 0 || altura >= 5) {
        ehAlturaValido = false;
        tdImc.textContent = "Altura inválido";
    }

    if (ehPesoValido && ehAlturaValido) {
        var imc = peso / (altura  * altura);
        tdImc.textContent = imc.toFixed(2);
    } else {
        tdImc.textContent = "Verifique Peso e Altura";
    }
}
3 respostas

Olá Leonardo,

esse erro significa que o seu paciente está indefinido no momento em que o interpretador chega nessa linha.

Faça uma simulação manual com 2 ou 3 pacientes e preste bastante atenção na relação entre a quantidade de pacientes e os valores de i que o definem na linha var paciente = pacientes[i];

Se não encontrar o erro, manda outra mensagem com o resultado da sua simulação!

Abraços e bons estudos!

Oi Leonardo,

O seu document.querySelectorAll(".paciente") está trazendo algo? Outra coisa, note que seu for está com a condição var i = 0; i <= pacientes.length; i++, então mesmo quepacientes tenha tamanho 0 ele vai entrar no for ao menos uma vez.

solução!

Caros,

Testei "for" com número 0 ele continuava apresentar erro. Testei com o número 1 ele pulava a primeira linha da tabela.

Voltei ao cenário anterior, e agora não apresenta mais nenhum erro.

Corrigido, mas não sei como.

Obrigado, Leonardo Feijó


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

    if (peso <= 0 || peso >= 1000) {
        ehPesoValido = false;
        tdImc.textContent = "Peso inválido";
    }

    if (altura <= 0 || altura >= 5) {
        ehAlturaValido = false;
        tdImc.textContent = "Altura inválido";
    }

    if (ehPesoValido && ehAlturaValido) {
        var imc = peso / (altura  * altura);
        tdImc.textContent = imc.toFixed(2);
    } else {
        tdImc.textContent = "Verifique Peso e Altura";
    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software