Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Uncaught TypeError - Javascript - Aula 03

Bom dia,

Fiz a aula "Conhecendo o DOM e organizando nosso código com objetos" e estou com o seguinte erro:

intro.js:1 Uncaught TypeError: Cannot read property 'textContent' of null

O código que estou usando é mesmo que está na aula, segue código:

HTML:

<!DOCTYPE html>
<html lang="pt-br">
    <head>
      <meta charset="utf-8">
      <title>Introdução</title>
    </head>
    <script src="intro.js"></script>
    <body>
        <h1>Bem-vindo</h1>
        <table>
            <tr>
                <th>Nome</th>
                <th>Peso</th>
                <th>Altura</th>
                <th>IMC</th>
            </tr>
            <tr>
                <td id="nome-1">Leonardo</td>
                <td id="peso-1">50.0</td>
                <td id="altura-1">1.60</td>
                <td id="imc-1"></td>
            </tr>
            <tr>
                <td id="nome-2">Paulo</td>
                <td id="peso-2">100</td>
                <td id="altura-2">2.00</td>
                <td id="imc-2"></td>
            </tr>
        </table>    
    </body>
</html>

E o Javascript:

var peso = document.getElementById("peso-1").textContent; 
var altura = document.getElementById("altura-1").textContent; 
var nome = document.getElementById("nome-1").textContent;

var paciente = {
    nome : nome,
    peso : peso,
    altura : altura
}

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

    var tdDoImc = document.getElementById("imc-1"); // pega o td do imc do paciente 1
    tdDoImc.textContent = imc; //Altera o conteúdo do td para o valor da variável imc

    console.log(imc);
}
else {
    alert("Nao existe divisao por 0");
    console("Não posso executar uma divisão por 0!");
}

Procurei no Google algo que me ajudasse mas sem sucesso. Se alguém poder me explicar o que está errado, agradeço.

4 respostas

Olá Taynan, tudo bem?

Uma sugestão, tente trocar a posição do:

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

para que fique antes do fechamento da tag body:

...
    <script src="intro.js"></script>
</body>

Espero que funcione!

Abs

Olá Rafael, Fiz esse teste, coloquei dentro da tag body, mas continua com o mesmo erro.

solução!

Olá Taynan,

Entendo, o estranho que fiz o teste e apareceu no console o valor do imc. Só pra certificar, seu arquivo html e js estão no mesmo diretório e o nome do seu arquivo javascript é intro.js?

Estou colocando abaixo meu html, o js não alterei:

<html lang="pt-br">
    <head>
      <meta charset="utf-8">
      <title>Introdução</title>
    </head>
    <body>
        <h1>Bem-vindo</h1>
        <table>
            <tr>
                <th>Nome</th>
                <th>Peso</th>
                <th>Altura</th>
                <th>IMC</th>
            </tr>
            <tr>
                <td id="nome-1">Leonardo</td>
                <td id="peso-1">50.0</td>
                <td id="altura-1">1.60</td>
                <td id="imc-1"></td>
            </tr>
            <tr>
                <td id="nome-2">Paulo</td>
                <td id="peso-2">100</td>
                <td id="altura-2">2.00</td>
                <td id="imc-2"></td>
            </tr>
        </table>    
         <script src="intro.js"></script>
    </body>
</html>

Espero que funcione

Abs

Rafael, Tinha colocado o script no começo da body, com o seu codigo, no final, funcionou, aqui a ordem dos fatores altera o produto :D Obrigado pela ajuda.