Olá a todos,
Já que este é um curso básico, está faltando um importante detalhe que é a finalização do desafio, isto é, explicar em detalhes num vídeo 5.4 (assim como vinha fazendo até então) como o instrutor implementaria a solução e não simplesmente "jogar" a solução e esperar que os alunos consigam compreender.
Por exemplo: na solução do instrutor abaixo, não sei como implententá-la de forma a concatenar todos scripts criados e formar uma solução única (isoladamente esta solução resolve). Daí surgem diversas dúvidas.
// MONTA PACIENTE - SOLUÇÃO DO INSTRUTOR
function montaPaciente(pacienteTr){
var tdNome = pacienteTr.getElementsByClassName("info-nome")[0];
var tdPeso = pacienteTr.getElementsByClassName("info-peso")[0];
var tdAltura = pacienteTr.getElementsByClassName("info-altura")[0];
var paciente = {
nome : tdNome.textContent,
peso : tdPeso.textContent,
altura : tdAltura.textContent,
pegaImc: function() {
if(this.altura != 0){
var imc = this.peso / (this.altura * this.altura);
return imc;
} else{
console("Não posso dividir por zero!");
}
}
}
return paciente;
}
var trsPacientes = document.getElementsByClassName("paciente");
for(var posicaoAtual = 0; posicaoAtual <= trsPacientes.length - 1; posicaoAtual++){
var pacienteTr = trsPacientes[posicaoAtual];
var tdImc = pacienteTr.getElementsByClassName("info-imc")[0];
var pacienteAtual = montaPaciente(pacienteTr); //aqui chamamos a nova função
var imc = pacienteAtual.pegaImc();
tdImc.textContent = imc;
console.log(imc);
}
Dúvidas:
i. Foi dito no final do vídeo 5.3 que se deveria isolar a função montaPaciente num arquivo à parte e importar no html. Mas o que estou vendo é a função sendo chamada de dentro do arquivo atual, que eu não sei qual é.
ii. Já que a ideia é não repetir código, por que está sendo usado o FOR() nesta solução ao invés do percorreArray() que havia sido criado para justamente evitar tal repetição?
Entendi que neste módulo deveria ser aplicado todos os conceitos concatenados num único arquivo, numa ordem do tipo:
var trsPacientes = document.getElementsByClassName("paciente");
percorreArray(argumento, comportamento); // <script src="percorre-array.js"></script>
montaPaciente(argumento); // sendo importado no html <script src="monta-paciente.js"></script>
// Daí então manipular os dados recebidos
Enfim, ficou deveras confuso!