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

Dúvida no Ex. 4 da Aula 5 - Funções e os cidadãos de primeira classe

Eis o meu código:

´´´ function montapaciente (trdopaciente){

var tdnome = trdopaciente.getElementsByClassName("info-nome").textContent[0]; var tdpeso = trdopaciente.getElementsByClassName("info-peso").textContent[0]; var tdaltura = trdopaciente.getElementsByClassName("info-altura").textContent[0];

var paciente = {

nome : tdnome, peso : tdpeso, altura : tdaltura, calculaimc : function(){

return peso/(altura*altura);

}

}

return paciente;

}

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

for(var atual = 0; atual <= pacientes.length - 1; atual++){

var trdopaciente = pacientes[atual]; var tdimc = trdopaciente.getElementsByClassName("info-imc")[0]; var paciente = montapaciente[trdopaciente]; var imc = paciente.calculaimc();

tdimc.textContent = imc; console.log(imc);

}

´´´

Oq ocorre é q está dando erro aqui: "var imc = paciente.calculaimc();" de uncaught type error cannot read property 'calculaimc' od undefined

Alguém pode me dizer no q estou errando?

Obrigado

4 respostas

Gabriel, deixa eu aproveitar e dar uma dica. Primeiro, é muito legal ver que você tentou formatar o código, pois isso nos ajuda na hora de entender o que houve com seu código, porém, não usou o backstick, usou ´´´. Backstick é o mesmo símbolo mais deitado para o outro lado, esse aqui: ` . Você tem que usar três deles como você fez.

Tem como você postar novamente usando esta forma? Daí fica mais fácil para eu e outros colegas o ajudarem.

Claro,

function montapaciente (trdopaciente){

var tdnome = trdopaciente.getElementsByClassName("info-nome").textContent[0]; 
var tdpeso = trdopaciente.getElementsByClassName("info-peso").textContent[0]; 
var tdaltura = trdopaciente.getElementsByClassName("info-altura").textContent[0];

var paciente = {

nome : tdnome, peso : tdpeso, altura : tdaltura, calculaimc : function(){

return peso/(altura*altura);

}

}

return paciente;

}

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

for(var atual = 0; atual <= pacientes.length - 1; atual++){

var trdopaciente = pacientes[atual];
var tdimc = trdopaciente.getElementsByClassName("info-imc")[0]; var paciente = montapaciente[trdopaciente]; 
var imc = paciente.calculaimc();

tdimc.textContent = imc; console.log(imc);

}

Prontinho, obrigado pelo aviso nem havia notado q n estava usando o backstick

solução!

Show Gabriel!

O problema é este:

 var paciente = montapaciente[trdopaciente];

Você está querendo chamar o função montapaciente, mas está usando colchetes!

O mais correto é

 var paciente = montapaciente(trdopaciente);

Como a função não tinha sido executada, paciente ficou undefined, por isso não foi possível chamar a função calculaimp!

Abraço!

Muito Obrigado!