Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

12
respostas

Meu console não funcionou

Foi feito o download do projeto no inicio da aula conforme orientação, porém qndo começou explicar sobre o DOM, como pegar as informações do ID etc, mas ele foi feito no .js e executado no index.html, comigo não funcionou

<!doctype html>

Meus pacientes

Meus pacientes

NomePeso(kg)Altura(m)IMC
Leonardo571.67
Paulo1002.00

Adicionar novo paciente

Nome: Peso: Altura:

//arquivo calcula-imc.js var tdPeso = document.getElementById("peso-2"); var tdAltura = document.getElementById("altura-2");

var paciente = { peso : tdPeso.textContent, altura : tdAltura.textContent};

if(paciente.altura != 0){ var imc = paciente.peso / (paciente.altura*paciente.altura);

var tdImc = document.getElementById("imc-2"); tdImc.textContent = imc;

console.log(imc); }else{ console.log("Não executei"); }

12 respostas

Oi Danilo, o que não funcionou? Para copiar os códigos, use o botão inserir código :). Copia o html do index e dos arquivos js que vc tem.

//arquivo calcula-imc.js var tdPeso = document.getElementById("peso-2"); var tdAltura = document.getElementById("altura-2");

var paciente = { peso : tdPeso.textContent, altura : tdAltura.textContent};

if(paciente.altura != 0){ var imc = paciente.peso / (paciente.altura*paciente.altura);

var tdImc = document.getElementById("imc-2"); tdImc.textContent = imc;

console.log(imc); }else{ console.log("Não executei"); }

<!doctype html>

Meus pacientes

Meus pacientes

NomePeso(kg)Altura(m)IMC
Leonardo571.67
Paulo1002.00

Adicionar novo paciente

Nome: Peso: Altura:

No vídeo é executado através do index no console e no meunão deu certo

Oi Danilo, para eu conseguir te ajudar preciso que vc faça o seguinte.

1) Copie o html do arquivo index.html e cole entre as aspas fornecidas pelo botão inserir código

2) Faça o mesmo para os arquivos javascript

3) Tente ver qual erro acontece no seu console.

<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Meus pacientes</title>
        <link rel="stylesheet" type="text/css" href="reset.css">
        <link rel="stylesheet" type="text/css" href="alura.css">


    </head>
    <body>
        <header>
            <div class="container">
                <h1>Meus pacientes</h1>
            </div>
        </header>
        <main class="container">
            <section>
                <h2>Meus pacientes</h2>
                <table>
                    <tr>
                        <th>Nome</th>
                        <th>Peso(kg)</th>
                        <th>Altura(m)</th>
                        <th>IMC</th>
                    </tr>
                    <tr class="paciente">
                        <td class="info-nome">Leonardo</td>
                        <td class="info-peso" id="peso-1">57</td>
                        <td class="info-altura" id="altura-1">1.67</td>
                        <td class="info-imc" id="imc-1"></td>
                    </tr>
                    <tr class="paciente">
                        <td class="info-nome">Paulo</td>
                        <td class="info-peso" id="peso-2">100</td>
                        <td class="info-altura" id="altura-2">2.00</td>
                        <td class="info-imc" id="imc-2"></td>
                    </tr>
                </table>
                <button id="calcula-imcs" class="botao ">Calcular Imcs</button>
            </section>
            <section>
                <h2>Adicionar novo paciente</h2>    
                <form>
                    <fieldset>
                        <label for="nome">Nome:</label>
                        <input id="campo-nome" type="text" placeholder="digite o nome do seu paciente">
                    </fieldset>
                    <fieldset class="campo-medio">
                        <label for="peso">Peso:</label>
                        <input id="campo-peso" type="text" placeholder="digite o peso do seu paciente">
                    </fieldset>
                    <fieldset class="campo-medio">
                        <label for="altura">Altura:</label>
                        <input id="campo-altura" type="text" placeholder="digite a altura do seu paciente">
                    </fieldset>
                    <button id="adicionar-paciente" class="botao bto-principal">Adicionar</button>
                </form>
            </section>
        </main>
    </body>

</html>


/arquivo calcula-imc.js
var tdPeso = document.getElementById("peso-2");
var tdAltura = document.getElementById("altura-2");     


var paciente = { peso : tdPeso.textContent, altura : tdAltura.textContent};    

if(paciente.altura != 0){
    var imc = paciente.peso / (paciente.altura*paciente.altura);

    var tdImc = document.getElementById("imc-2");
    tdImc.textContent = imc;

    console.log(imc);
}else{
    console.log("Não executei");
}

Não está funcionando porque seu código está fora das tags html.

Primeiro link seu arquivo JS usando a tag script antes do fechamento da tag body

<script type="text/javascript" src="seuarquivo.js"></script>

Depois insira seu código javascript nesse seu arquivo criado.

Exclua essa / do seu código, pois assim não irá funcionar. Para adicionar comentários em uma linha utilize //

<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Meus pacientes</title>
        <link rel="stylesheet" type="text/css" href="reset.css">
        <link rel="stylesheet" type="text/css" href="alura.css">
        <script>
        //arquivo calcula-imc.js

        var tdPeso = document.getElementById("peso-2");
var tdAltura = document.getElementById("altura-2");     


var paciente = { peso : tdPeso.textContent, altura : tdAltura.textContent};    

if(paciente.altura != 0){
    var imc = paciente.peso / (paciente.altura*paciente.altura);

    var tdImc = document.getElementById("imc-2");
    tdImc.textContent = imc;

    console.log(imc);
}else{
    console.log("Não executei");
}

        </script>


    </head>
    <body>
        <header>
            <div class="container">
                <h1>Meus pacientes</h1>
            </div>
        </header>
        <main class="container">
            <section>
                <h2>Meus pacientes</h2>
                <table>
                    <tr>
                        <th>Nome</th>
                        <th>Peso(kg)</th>
                        <th>Altura(m)</th>
                        <th>IMC</th>
                    </tr>
                    <tr class="paciente">
                        <td class="info-nome">Leonardo</td>
                        <td class="info-peso" id="peso-1">57</td>
                        <td class="info-altura" id="altura-1">1.67</td>
                        <td class="info-imc" id="imc-1"></td>
                    </tr>
                    <tr class="paciente">
                        <td class="info-nome">Paulo</td>
                        <td class="info-peso" id="peso-2">100</td>
                        <td class="info-altura" id="altura-2">2.00</td>
                        <td class="info-imc" id="imc-2"></td>
                    </tr>
                </table>
                <button id="calcula-imcs" class="botao ">Calcular Imcs</button>
            </section>
            <section>
                <h2>Adicionar novo paciente</h2>    
                <form>
                    <fieldset>
                        <label for="nome">Nome:</label>
                        <input id="campo-nome" type="text" placeholder="digite o nome do seu paciente">
                    </fieldset>
                    <fieldset class="campo-medio">
                        <label for="peso">Peso:</label>
                        <input id="campo-peso" type="text" placeholder="digite o peso do seu paciente">
                    </fieldset>
                    <fieldset class="campo-medio">
                        <label for="altura">Altura:</label>
                        <input id="campo-altura" type="text" placeholder="digite a altura do seu paciente">
                    </fieldset>
                    <button id="adicionar-paciente" class="botao bto-principal">Adicionar</button>
                </form>
            </section>
        </main>
    </body>

</html>

Isso ? mesmo assim não funcionou no console, no vídeo ele testa pelo arquivo index.

Não foi muito claro sua explicação

Oi Danilo, pega todo o código <script>...</script> e move para antes do fechamento </body>. O problema é que vc está executando o javascript antes das tags html que possuem os valores e assim, na hora da execução, os elementos ainda não existe.

Oi Alberto,

Agora foi claro, deu certo! Obrigado.

E agora como faço para executar o calculo do IMC das duas pessoas e tbm como faço para executar através do arquivo externamente, chamando ele na pasta js ??

Para executar através do arquivo vc precisa pegar o código entre as tags script, jogar dentro de um arquivo, em geral com a extensão .js e importá-lo da sua página. Assim:

<script src="caminhoDaPasta/arquivo.js"></script>

Para pegar os imcs de todos pacientes vou deixar de desafio para vc.. Você precisa fazer um código que retorne as informações de cada linha da tabela e ir calculando.

Dei continuidade as aulas e mesmo foi feito o exemplo conforme vídeo porém nao executa, consegue me ajudar ?

            <!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Meus pacientes</title>
        <link rel="stylesheet" type="text/css" href="reset.css">
        <link rel="stylesheet" type="text/css" href="alura.css">


    </head>
    <body>
        <header>
            <div class="container">
                <h1>Meus pacientes</h1>
            </div>
        </header>
        <main class="container">
            <section>
                <h2>Meus pacientes</h2>
                <table>
                    <tr>
                        <th>Nome</th>
                        <th>Peso(kg)</th>
                        <th>Altura(m)</th>
                        <th>IMC</th>
                    </tr>
                    <tr class="paciente">
                        <td class="info-nome">Leonardo</td>
                        <td class="info-peso" id="peso-1">57</td>
                        <td class="info-altura" id="altura-1">1.67</td>
                        <td class="info-imc" id="imc-1"></td>
                    </tr>
                    <tr class="paciente">
                        <td class="info-nome">Paulo</td>
                        <td class="info-peso" id="peso-2">100</td>
                        <td class="info-altura" id="altura-2">2.00</td>
                        <td class="info-imc" id="imc-2"></td>
                    </tr>
                </table>
                <button id="calcula-imcs" class="botao ">Calcular Imcs</button>
            </section>
            <section>
                <h2>Adicionar novo paciente</h2>    
                <form>
                    <fieldset>
                        <label for="nome">Nome:</label>
                        <input id="campo-nome" type="text" placeholder="digite o nome do seu paciente">
                    </fieldset>
                    <fieldset class="campo-medio">
                        <label for="peso">Peso:</label>
                        <input id="campo-peso" type="text" placeholder="digite o peso do seu paciente">
                    </fieldset>
                    <fieldset class="campo-medio">
                        <label for="altura">Altura:</label>
                        <input id="campo-altura" type="text" placeholder="digite a altura do seu paciente">
                    </fieldset>
                    <button id="adicionar-paciente" class="botao bto-principal">Adicionar</button>
                </form>
            </section>
        </main>

        <script>
        //arquivo calcula-imc.js

        var trsPacientes = document.getElementByClassName ("paciente"); //array

var posicaoAtual = 0;
while(posicaoAtual <= trsPacientes.length - 1){

    var pacienteTr = trsPacientes[posicaoAtual];

    var tdNome = pacienteTr.getElementByClassName("info-nome")[0];
    var tdPeso = pacienteTr.getElementByClassName("info-peso")[0];
    var tdAltura = pacienteTr.getElementByClassName("info-altura")[0];

    var paciente = {nome : tdNome.textContent, peso : textContent, altura : tdAltura.textContent};





if(paciente.altura != 0){
    var imc = paciente.peso / (paciente.altura*paciente.altura);

    var tdImc = document.getElementById("imc-2");
    tdImc.textContent = imc;

    console.log(imc);
}else{
    console.log("Não posso dividir por zero");
}

posicaoAtual++

}    

        </script>

    </body>

</html>

Danilo, você está com erro de sintaxe quando chama getElementByClassName, o correto é getElementsByClassName com o element no plural como destacado.

Além disso, nessa linha:

var paciente = {nome : tdNome.textContent, peso : textContent, altura : tdAltura.textContent};

você esqueceu de por o tdPeso antes do textContent do peso, deveria ficar assim:

var paciente = {nome : tdNome.textContent, peso : tdPeso.textContent, altura : tdAltura.textContent};

Espero que tenha ajudado Danilo.