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

Dúvida sobre exercicio 4 da aula 4 - Coleções e Loops

for (var posicaoatual=0; posicaoatual <= trspacientes.length-1; posicaoatual++) {      
    var pacientetratual = trspacientes[posicaoatual];

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

    console.log(tdnome.textContent);
    console.log(tdpeso.textContent);
    console.log(tdaltura.textContent);

    var paciente = {nome : tdnome.textContent, peso : tdpeso.textContent, altura : tdaltura.textContent}

    console.log(paciente);

    if ( paciente.altura != 0 && paciente.peso != 0) {
        var imc = paciente.peso / (paciente.altura * paciente.altura);

        //abaixo a linha original que só "popula a primeira linha da minha tabela, onde existem 4 "pessoas" com peso e altura
        //var tdimc = document.getElementsByClassName("info-imc")[0]; // pega o td do imc do paciente atual

        //agora logo abaixo, fiz uma modificação, e os resultados são mostrados corretamente para cada uma das 4 pessoas:
        //mudei o [0] por [posicaoatual]
        var tdimc = document.getElementsByClassName("info-imc")[posicaoatual]; // pega o td do imc do paciente atual

        tdimc.textContent = imc; //Altera o conteúdo do td para o valor da variável imc

        console.log(imc);
    } else {
        if (paciente.peso == 0) console.log("Não posso executar uma divisão por 0! peso zerado!")
        else                    console.log("Não posso executar uma divisão por 0! altura zerado!");
    };  
};

agora a minha pergunta é a seguinte: veja no bloco do IF da Altura e do Peso diferentes de 0 (zero) ... está comentado o codigo original do exercicio... pois no meu caso, o resultado não apareceu corretamente na pagina HTML... apareceu o ultimo cálculo de IMC na primeira linha... e o segundo bloco abaixo do comentado, faz o meu HTML funcionar perfeitamente, colocando cada calculo em sua respectiva linha... Qual foi o meu erro em não conseguir fazer o calculo original funcionar? ( //var tdimc = document.getElementsByClassName("info-imc")[0]; ) obs.: os consoles.logs aparecem corretamente e o objeto pacientes tb.

abaixo as opções dos TR e TD do meu html:

                    <tr class="paciente">
                        <td class="info-nome">Leonardo</td>
                        <td class="info-peso">57</td>
                        <td class="info-altura">1.67</td>
                        <td class="info-imc"></td>
                    </tr>
                    <tr class="paciente">
                        <td class="info-nome">Paulo</td>
                        <td class="info-peso">100</td>
                        <td class="info-altura">2.00</td>
                        <td class="info-imc"></td>
                    </tr>
                    <tr class="paciente">
                        <td class="info-nome">Leila</td>
                        <td class="info-peso">94</td>
                        <td class="info-altura">1.68</td>
                        <td class="info-imc"></td>
                    </tr>
                    <tr class="paciente">
                        <td class="info-nome">Gi</td>
                        <td class="info-peso">47</td>
                        <td class="info-altura">1.63</td>
                        <td class="info-imc"></td>
                    </tr>
2 respostas
solução!

Boa tarde Leila!

Tenta trocar isto:

var tdimc = document.getElementsByClassName("info-imc")[0];

Por isto:

var tdimc = pacientetratual.getElementsByClassName("info-imc")[0];

Em um você está pegando o primeiro elemento com a classe "info-imc" em todo documento, no outro você está procurando dentro de um escopo menor, no caso o pacientetratual.

Espero ter ajudado, bons estudos!

Sim! deu certo, você tem razão, funcionou, eu tenho que pegar ref. a minha "posição atual" e não no documento inteiro! Obrigada!