Solucionado (ver solução)
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