2
respostas

Minha Classe "paciente-invalido" não está sendo inserida na TR criada pelo form

O código está aplicando a classe "paciente-invalido", porém não na TR criada e sim na anterior, percebi que posso criar um If para resolver o erro, mas não me parece que está correto.

console.log( " oi ");



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

botaoAdicionar.addEventListener ( "click" , function ( event ) {

    event.preventDefault( );

    var form = document.querySelector( "#form-adiciona" ) ; 

    var paciente = {

        formNome: form.nome.value ,

        formPeso: form.peso.value ,

        formAltura: form.altura.value ,

        formGordura: form.gordura.value ,

        formImc: calcularImc ( form.peso.value , form.altura.value )

    }


// var tabela = document.querySelector( "#tabela-pacientes" );

var tabelaTr = criarElementoNoHtml( "tr" );

var nomeTd = criarElementoNoHtml( "td" );
var pesoTd = criarElementoNoHtml( "td" );
var alturaTd = criarElementoNoHtml( "td" );
var gorduraTd = criarElementoNoHtml( "td" );
var imcTd = criarElementoNoHtml( "td" );




tabelaTr.classList.add("paciente")

nomeTd.classList.add( "info-nome" )
pesoTd.classList.add( "info-peso" )
alturaTd.classList.add( "info-altura" )
gorduraTd.classList.add( "info-gordura" )
imcTd.classList.add( "info-imc" )




tabela.appendChild(tabelaTr);

 tabelaTr.appendChild( nomeTd );
 tabelaTr.appendChild( pesoTd );
 tabelaTr.appendChild( alturaTd );
 tabelaTr.appendChild( gorduraTd );
 tabelaTr.appendChild( imcTd );

 nomeTd.textContent = paciente.formNome ;  
 pesoTd.textContent = paciente.formPeso ;
 alturaTd.textContent = paciente.formAltura ; 
 gorduraTd.textContent = paciente.formGordura ;
 imcTd.textContent = paciente.formImc ;



  console.log(tabela)

    console.log( paciente.formNome, paciente.formPeso, paciente.formAltura, paciente.formGordura, paciente.formImc);




} )


function criarElementoNoHtml ( elemento ){

    return document.createElement( elemento );


}



var tabela = document.querySelector( "#tabela-pacientes" );

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


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

    var paciente = pacientes[i];

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

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

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

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

    var imc = paciente.querySelector( ".info-imc" ).textContent = calcularImc ( peso, altura);



}


// valida IMC





function calcularImc ( peso, altura) { 

    var pesoCerto = validaPeso( peso ) ; 

    var pesoAltura =validaAltura( altura ) ;



     if ( !pesoCerto ) {

        paciente.classList.add("paciente-invalido") ; 

         return "Peso Inválido" ;
     }

     if ( !pesoAltura ) {

        paciente.classList.add("paciente-invalido")

         return  "Altura Inválido";

     }

     if ( pesoCerto && pesoAltura){

         return  parseFloat( ( peso / ( altura * altura ) ).toFixed( 2 ) );

     }

 }


 function validaPeso ( peso ){

     var pesoCerto = "true"

     if ( peso <= 0 || peso >= 230 ) { 

        return pesoCerto = false ;

     } 

     return pesoCerto ;

 }


 function validaAltura ( altura ) {

     var alturaCerto = true ;

     if ( altura <= 0 || altura >= 2.30) {

        return alturaCerto = false;

     }

     return alturaCerto ;
 }
2 respostas

Boa noite, Juliano! Como vai?

Vc poderia colar aqui o HTML? Assim eu poderei testar o seu código para verificar o que está acontecendo.

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="UTF-8">
    <title>Aparecida Nutrição</title>
    <link rel="icon" href="favicon.ico" type="image/x-icon">
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <link rel="stylesheet" type="text/css" href="css/index.css">

</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">1000</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">2.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>
        <section class="container">
            <h2 id="titulo-form">Adicionar novo paciente</h2>
            <form id="form-adiciona">
                <div class="grupo">

                    <label for="nome">Nome:</label>

                    <input id="nome" name="nome" type="text" placeholder="digite o nome do seu paciente" class="campo">

                </div>

                <div class="grupo">

                    <label for="peso">Peso:</label>

                    <input id="peso" name="peso" type="text" placeholder="digite o peso do seu paciente" class="campo campo-medio">

                </div>

                <div class="grupo">

                    <label for="altura">Altura:</label>

                    <input id="altura" name="altura" type="text" placeholder="digite a altura do seu paciente" class="campo campo-medio">
                </div>

                <div class="grupo">

                    <label for="gordura">% de Gordura:</label>

                    <input id="gordura" type="text" placeholder="digite a porcentagem de gordura do seu paciente" class="campo campo-medio">

                </div>

                <button id="adicionar-paciente" class="botao bto-principal">Adicionar</button>

            </form>
        </section>


    </main>
    <!-- importação dos javaScript aqui -->
    <!-- <script src="/js/imc.js"></script>
    <script src="/js/formTeste.js"></script> -->
</body>

</html>