Solucionado (ver solução)

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!

Solucionado
(ver solução)
10
respostas

Mensagem de erro: Uncaught TypeError: Cannot read property 'textContent' of null

Parece tudo certo para mim, não sei onde está o erro quando executo o seguinte código:

var peso = document.getElementById("peso-1").textContent; // pega o peso do paciente
var altura = document.getElementById("altura-1").textContent; // pega a altura do paciente
var nome = document.getElementById("nome-1").textContent; // pega o nome do paciente

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

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{
    console("Não posso executar uma divisão por 0!");
}
10 respostas

Oi Rosana

O código que você postou está correto, então o problema pode estar no HTML ou em algum outro script anterior. Você poderia postar todo o seu código de teste (HTML + Javascrript) aqui no sistema?

Não se esqueça de colocar seu código entre ``` para que ele apareça formatado.

O código também está com o mesmo problema. Após várias tentativas, constatei que esse erro ocorre quando o script esta como link (<script src="meuscript.js"></script>) ou definido no head. Caso o mesmo esteja na tag <body> ele captura o objeto. Nos demais casos, o DOM não é encontrado e retorna null.

solução!

Pronto! Acabei de identificar o erro.

Quando apresenta esse erro. É por tentarmos executar uma função de um objeto que não existe. Estava colocando a declaração (link) do script no inicio do código, ou seja, antes mesmo da criação do objeto.

Rosana, coloque a declaração do script antes do fechamento da tag body (). Assim, todos os elementos DOM serão criados e estarão acessíveis para uso.

Rosana, este erro pode ocorrer por não definir todos os Id's corretamente no seu arquivo HTML. No seu caso, verifique o campo do nome, no arquivo que padrão baixado do site não está com o id, é necessário inserir id="nome-1":

                    <tr class="paciente">
                        <td class="info-nome" id="nome-1">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>

Olá, é isso mesmo!! Coloquei a chamada do script no final, depois de carregar a tabela e antes do fechamento da tag

e funcionou!!

Obrigada Fabiano, Vitor e Marcos.

Olá Rosana

Você poderia marcar a resposta que resolveu o seu problema como solução dessa discussão?

okay!Feito!

Beleza galera, matou a minha dúvida também.

Estava com o mesmo problema , solucionado colocando o script antes do fechamento da body

Uma solução para evitar este problema é colocar todo o código dentro de uma função anônima associado ao evento onload do objeto window.

window.onload = function(){ // todo o script aqui }

me corrijam se eu tiver errado :P