6
respostas

O meu não está calculando o IMC!

insira seu código aqui
</head>
<body>

    <header>
        <div class="container">
            <h2 class="titulo">Aparecida Nutrição</h2>
        </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="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>

Principal.js

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

titulo.textContent = "Aparecida Nutricionista";

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

var tdAltura = paciente.querySelector(".info-altura"); var tdPeso = paciente.querySelector(".info-peso"); var tdImc = paciente.querySelector(".info-imc");

var altura = tdAltura.textContent; var peso = tdPeso.textContent;

var alturaEhValida = true; var pesoEhValido = true;

if (peso <= 0 || peso > 1000) { console.log("Peso inválido!"); tdPeso.textContent = "Peso inválido!"; pesoEhValido = false;

}

if (altura <= 0 || altura >= 3) { console.log("Altura inválida!"); tdAltura.textContent = "Altura inválida!"; alturaEhValida = false; }

if (alturaEhValida && pesoEhValido) {

var imc = peso / (altura * altura);
tdImc.textContent = imc;

} else { tdImc.textContent = "Altura e/ou peso inválidos!" }

6 respostas

Olá, Rodrigo, tudo bem?

Colei seu código aqui no meu editor de texto e descobri onde tá o erro.

Está no seu JavaScript na linha:

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

Aqui você selecionou o paciente pela id (já que usou um # em vez de um . antes de "primeiro-paciente"), mas no seu html:

<tr class="primeiro-paciente" >

você caracterizou seu paciente como uma class e não com um id.

No seu JavaScript, se você trocar o # por um ponto, o problema tá resolvido. Tente aí.

Fala Rodrigo, tudo bom?

Você está pecando exatamente nessa linha:

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

Se observamos no HTML, na verdade, primeiro-paciente é uma classe! por isso devemos utilizar o seletor de classes! O correto seria:

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

//.primeiro-paciente

Uma boa forma de analisar esses erros é sempre ficar de olho no console do desenvolvedor e utilizar o console.log() para saber exatamente com o que você está lidando, se a sua seleção foi correta e se tudo vai funcionar como o esperado!

Espero ter ajudado!

Abraços e bons estudos!

Fiz a alteração, mas ainda assim não deu certo!

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

titulo.textContent = "Aparecida Nutricionista";

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

var tdAltura = paciente.querySelector(".info-altura"); var tdPeso = paciente.querySelector(".info-peso"); var tdImc = paciente.querySelector(".info-imc");

var altura = tdAltura.textContent; var peso = tdPeso.textContent;

var alturaEhValida = true; var pesoEhValido = true;

if (peso <= 0 || peso > 1000) { console.log("Peso inválido!"); tdPeso.textContent = "Peso inválido!"; pesoEhValido = false;

}

if (altura <= 0 || altura >= 3) { console.log("Altura inválida!"); tdAltura.textContent = "Altura inválida!"; alturaEhValida = false; }

if (alturaEhValida && pesoEhValido) {

var imc = peso / (altura * altura);
tdImc.textContent = imc;

} else { tdImc.textContent = "Altura e/ou peso inválidos!" }

Olá Rodrigo, tudo bom?

Eu testei aqui e seu código está funcional. Repare que nesse momento você está calculando o IMC apenas para o primeiro paciente e não para todos! Durante o curso você aprenderá como implementar para o restante!

Dito isso, está acusando algum erro no console?

Abraços!

Obrigada pessoal! Mais Infelizmente não deu certo. Sim eu sei que é apenas para o primeiro. Vou continuar seguindo aqui, Obrigada pela ajuda!

Beleza Rodrigo!

Veja se sua importação está correta (tag script). Qualquer dúvida volte a postar!

Abraços e bons estudos.