3
respostas

Não aparece no IMC a mensagem de erro

Quando eu coloco o peso incorreto a mensagem do IMC aparece como vazio, a mensagem que eu escrevi no tdImc.textcontent não aparece, qual seria o problema?

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 pesoEValido = true; var alturaEValida = true;

if (peso <= 0 || peso >= 1000) { console.log("Peso inválido!"); pesoEValido = false; tdImc.textContent = imc; }

if (altura <= 0 || altura >= 3.00){ console.log("Altura inválida!"); alturaEValida = false; tdImc.textContent = "Altura inválida!"; }

if(alturaEValida && pesoEValido) { var imc = peso / (altura * altura); console.log(peso); console.log(altura); console.log(imc); }

tdImc.textContent= imc;

3 respostas

Oi, Bruno, tudo bem?

Você pode por aqui o seu arquivo HTML para testarmos?

O html é o que o professor está utilizando, aquele do exemplo, deixa eu colocar:

</head>
<body>

    <header>
        <div class="container">
            <h1>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" >
                        <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>

</body>

Olá Bruno, tudo bem?

Conseguir achar seus erros:

No HTML não há um id no seu primeiro paciente, logo, o document.querySelector("#primeiro-paciente") dará erro null, pois não foi achado tal elemento.

E também, acho que você esqueceu de escrever o texto que seria mostrado caso o peso fosse false, em tdImc.textContent = imc dentro do primeiro if.

Ademais, você está chamando um variável em branco no fim do seu código, por isso que não é mostrado nada no lugar do imc. Portanto, remova tdImc.textContent= imc lá do fim.

Teste e me diga se entendeu e se funcionou. Espero ter ajudado!