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

Aula 03, Conhecendo o DOM

Não consigo fazer funcionar...

'''

var tdpeso = document.getElementById("peso-2"); var tdaltura = document.getElementById("altura-2");

var peso = tdpeso.textContent; var altura = tdaltura.textContent;

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

console.log(imc); }else{ console.log("Impossível executar pois altura é igual a zero"); } '''

10 respostas

Seu código está funcionando perfeitamente, no meu caso peguei o fonte original do projeto e nele contém o elemento "td" com o id="peso-2" e da altura o mesmo, verifique se esses IDs existem na sua página.

Realmente, não encontrei nenhum erro... porém o meu navegador diz que o erros está aqui:

var peso = tdpeso.textContent;

var altura = tdaltura.textContent;

Qual a mensagem de erro que aparece no navegador?

calcula-imc.js:10

Uncaught TypeError: Cannot read property 'textContent' of null

Então é isso mesmo, na sua página "index.html" não há elementos com os ids que está procurando: id="peso-2" e id="altura-2"

<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>

Isso é o que me frusta... pela lógica você tem toda razão... mas tem o Id, tentei até trocar os nomes... ver se havia escrito errado...

<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>
solução!

Werner,

Para ir depurando o código, chame o console.log(tdPeso) e console.log(tdAltura) para saber o que está retornando. Isso irá ajudar a saber qual o erro, pois realmente, os códigos estão ok.

Faz isso e verifique o que ele retorna.

Abs.,

Werner,

Tenta colocar:

var tdpeso = document.getElementById("peso-2").value

O meu também esta dando esse erro, segui a dica do Werner e esta dando que tdPeso e tdAltura é igual a null. Isso fez com que a dica do João também não desse certo. Agora o porque de ser null que eu não sei kk

Por causa da renderização do DOM. Na hora que o navegador carrega seu script, o modelo da página não foi carregado. Coloca a importação do seu js antes do fechamento da tag "body" porque ai você garante que terá valores ligados a esses Id's quando o navegador renderizar o DOM da pagina