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

Dúvida no Ex. 4 da Aula 4 - Coleções e loops

No meu codigo:

var trsPaciente = document.getElementsByClassName("paciente");

for (var posicaoAtual = 0; posicaoAtual <= trsPaciente.length-1; posicaoAtual++) { var pacienteTr = trsPaciente[posicaoAtual]; console.log(pacienteTr); var tdNome = pacienteTr.getElementsbyClassName("info-nome")[0]; var tdPeso = pacienteTr.getElementsbyClassName("info-peso")[0]; var tdAltura = pacienteTr.getElementsbyClassName("info-altura")[0];

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

if (paciente.altura > 0) { var imc = paciente.peso / (paciente.altura * paciente.altura); var tdImc = document.getElementById("imc-1"); tdImc.textContent = imc.toFixed(2); console.log(imc); } else { console.log("Altura zerada"); }

}

Nao reconhece as linhas: var tdNome = pacienteTr.getElementsbyClassName("info-nome")[0]; var tdPeso = pacienteTr.getElementsbyClassName("info-peso")[0]; var tdAltura = pacienteTr.getElementsbyClassName("info-altura")[0];

Retorna erro: Uncaught TypeError: pacienteTr.getElementsbyClassName is not a function

2 respostas

Vai ser melhor você postar o código entre ``` (3 acentos de crase). Ficando da seguinte forma:

```

Código aqui dentro
```

Assim sai o texto formatado e fácil visualização e tente colocar o código completo do JS e também a da página html pois fica difícil de saber se é o JS ou o HTML.

Minha sugestão é vai no console do navegador, copie a primeira linha do código e cole no console, veja se pegou dados colocando o nome da variável. Feito isso na primeira linha vai para a segunda, vai fazendo até chegar o var trsPaciente = document.getElementsByClassName("paciente"); nele você coloca para pegar o primeiro elemento para testar os valores dentro do for ficando: var trsPaciente = document.getElementsByClassName("paciente")[0];

Bem esta é a maneira + fácil de você visualizar o erro, executar passo a passo, identificando os valores que é buscado. Bem isso não é só sugestão, se quer aprender JS terá que fazer isso quando se tiver sem ninguém para ajudar.

PS: da para copiar até a linha do trsPaciente no console e verificar somente o valor do trsPaciente, sem precisar de ir linha por linha.

solução!

Você está chamando errado a função getElementsByClassName. Repare no seu código que o By de getElementsByClassName está minúsculo:

tdNome = pacienteTr.getElementsbyClassName("info-nome")[0];

Quando o correto seria:

tdNome = pacienteTr.getElementsByClassName("info-nome")[0];

Reparou que o By é camelCase? Ou seja, a primeira letra é maiúscula. Você deve consertar isso em todas as variáveis (tdNome, tdPeso e tdAltura).

Obs: Quando enviar código, não esquecer das normas de formatação pois facilita bastante a leitura do mesmo.

Bons estudos!!