4
respostas

Uma Dúvida

No código do professor ele usa apenas na variável paciente o "document.querySelector", no demais ele declara a variáveis como "paciente.querySelector". Dessa forma o meu não funcionou, tive que deixar em todos o "document.querySelector". Porque isso acontece?

Código do professor:

var paciente = document.querySelector("#primeiro-paciente");

var tdPeso = paciente.querySelector(".info-peso"); var peso = tdPeso.textContent;

var tdAltura = paciente.querySelector(".info-altura"); var altura = tdAltura.textContent;

var tdImc = paciente.querySelector(".info-imc");

var imc = peso / (altura * altura);

tdImc.textContent = imc;

Meu código:

document.querySelector(".titulo");

var titulo = document.querySelector(".titulo");

titulo.textContent = "Aparecida Nutricionista"

var paciente = document.querySelector("#primeiro-paciente");

var tdPeso = document.querySelector(".info-peso"); var peso = tdPeso.textContent;

var tdAltura = document.querySelector(".info-altura"); var altura = tdAltura.textContent;

var tdImc = document.querySelector(".info-imc");

var imc = peso / (altura * altura);

tdImc.textContent = imc;

4 respostas

Oi, Jefferson, tudo bem?

Acabei de testar o seu código com o arquivo index.html e obtive sucesso. Mas veja que a segunda forma, a que deu certo como disse, as informações se referem a que paciente?

Quando utilizamos var paciente = document.querySelector("#primeiro-paciente"); e para capturar os valores:

var tdPeso = paciente.querySelector(".info-peso");

var tdAltura = paciente.querySelector(".info-altura");

var tdImc = paciente.querySelector(".info-imc");

Nós estamos dizendo, eu quero que vá na classe info-peso, info-altura e info-imc de paciente (nesse caso, paciente é o #primeiro-paciente). O retorno será o cálculo do imc do paciente Paulo.

Da forma como você fez, você está dizendo: pega os valores das classes info-peso, info-altura e info-imc, mas de qual paciente? Como o Paulo é primeiro paciente, o resultado é mesmo, mas se eu retirar o paciente Paulo da minha lista de pacientes, o seu cálculo cai para o seguinte, que é o João. Mas veja que queremos o imc que está com o id primeiro-paciente

Verifica se a id #primeiro-paciente está declarada certinha no seu index.html.

Qualquer dúvida é só falar!

Boa noite Laís!

Sim, está correto.

</head>
    <body>

        <header>
            <div class="container">
                <h1 class="titulo">Aparecida Nutrição</h1>
            </div>
        </header>
        <main>
            <section class="container">
                <h2>Meus pacientes</h2>
                <table>
                    <thead>
                        <tr>
                            <th>Nome</th>
                            <th>Peso(kg)</th>
                            <th>Altura(m)</th>
                            <th>Gordura Corporal(%)</th>
                            <th>IMC</th>
                        </tr>
                    </thead>
                    <tbody id="tabela-pacientes">
                        <tr class="paciente" id="primeiro-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>

                        <tr class="paciente" >
                            <td class="info-nome">João</td>
                            <td class="info-peso">80</td>
                            <td class="info-altura">1.72</td>
                            <td class="info-gordura">40</td>
                            <td class="info-imc">0</td>
                        </tr>

                        <tr class="paciente" >
                            <td class="info-nome">Erica</td>
                            <td class="info-peso">54</td>
                            <td class="info-altura">1.64</td>
                            <td class="info-gordura">14</td>
                            <td class="info-imc">0</td>
                        </tr>

                        <tr class="paciente">
                            <td class="info-nome">Douglas</td>
                            <td class="info-peso">85</td>
                            <td class="info-altura">1.73</td>
                            <td class="info-gordura">24</td>
                            <td class="info-imc">0</td>
                        </tr>
                        <tr class="paciente" >
                            <td class="info-nome">Tatiana</td>
                            <td class="info-peso">46</td>
                            <td class="info-altura">1.55</td>
                            <td class="info-gordura">19</td>
                            <td class="info-imc">0</td>
                        </tr>
                    </tbody>
                </table>

            </section>
        </main>

        <script src="js/principal.js"></script>

    </body>
</html>

Bom dia! Continuo sem entender, e não consigo solucionar esse erro. Na ferramenta do desenvolvedor consta essa informação.

Uncaught TypeError: Cannot read property 'querySelector' of null at principal.js:9

no caso é a linha com var tdPeso = paciente.querySelector(".info-peso");

Oi, Jefferson, tudo bem?

Que estranho, vê o print que tirei utilizando o seu código, além do valor do imc do paciente Paulo ser retornado, não me é retornado erro (só o erro da falta do arquivo css que foi chamado dentro do html).