1
resposta

Por que não funciona?

var paciente = document.querySelectorAll(".paciente");

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

    var peso = paciente[i].querySelector(".info-peso").textContent;

}

Sempre retorna: Uncaught TypeError: Cannot read property 'querySelector' of undefined

Um fragmento do HTML:

<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-gordura">10</td>
    <td class="info-imc">0</td>
</tr>
1 resposta

o querySelector não vai funcionar pq ele é um método do document. Vc precisa fazer o seguinte:

<body>

    <table>
        <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-gordura">10</td>
            <td class="info-imc">0</td>
        </tr>
    </table>

<script>
    // pegar todos os tds
    var pacienteData = document.querySelectorAll(".paciente td");
    // os tds retornam uma node list, visualmente é igual um array
    // mas é só visualmente, por isso precisamos transformá-lo em um array
    pacienteData = [...pacienteData]

    // após a node list ser transformado num array
    // podemos usar o map
    pacienteData.map(function(i){
        // Abaixo a lógica pra trazer  o peso
        if(i.getAttribute('class') == "info-peso"){
            console.log('peso: ', i.textContent)
        }
    })
</script>