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)
12
respostas

Não sei qual é o problema no Formulário calcula.imc

Então eu fiz como foi mostrado na aula, porém ele ainda o console da um erro no Calcula.imc.js

Fomr.js

var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function(event) {
    event.preventDefault();

    var form = document.querySelector("#form-adiciona");

    var nome = form.nome.value;
    var peso = form.peso.value;
    var altura = form.altura.value;
    var gordura = form.gordura.value;

    var pacienteTr = document.createElement("tr");

    var nomeTd = document.createElement("td");
    var pesoTd = document.createElement("td");
    var alturaTd = document.createElement("td");
    var gorduraTd = document.createElement("td");
    var imcTd = document.createElement("td");

    nomeTd.textContent = nome;
    pesoTd.textContent = peso;
    alturaTd.textContent = altura;
    gorduraTd.textContent = gordura;
    imcTd.textContent = calculaImc(peso,altura);

    pacienteTr.appendChild(nomeTd);
    pacienteTr.appendChild(pesoTd);
    pacienteTr.appendChild(alturaTd);
    pacienteTr.appendChild(gorduraTd);
    pacienteTr.appendChild(imcTd);

    var tabela = document.querySelector("#tabela-pacientes");

    tabela.appendChild(pacienteTr);

});

Meu CalculaImc.js

var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutricionista";

var pacientes = document.querySelectorAll(".paciente");

for (var i = 0; i < pacientes.length; i++) {

    var paciente = pacientes[i];

    var tdPeso = paciente.querySelector(".info-peso");
    var peso = tdPeso.textContent;

    var tdAltura = paciente.querySelector(".info-altura");
    var altura = tdAltura.textContent;

    var tdImc = paciente.querySelector(".info-imc");

    var pesoEhValido = true;
    var alturaEhValida = true;

    if (peso <= 0 || peso >= 1000) {
        console.log("Peso inválido!");
        pesoEhValido = false;
        tdImc.textContent = "Peso inválido";
        paciente.classList.add("paciente-invalido");
    }

    if (altura <= 0 || altura >= 3.00) {
        console.log("Altura inválida!");
        alturaEhValida = false;
        tdImc.textContent = "Altura inválida";
        paciente.classList.add("paciente-invalido");
    }

    if (pesoEhValido && alturaEhValida) {
        var imc = calculaImc(peso,altura);
        imcTd.textContent = imc;
}

function calculaImc(peso, altura){
    var imc = 0;
    imc = peso / (altura * altura);
    return imc.toFixed(2);
} 

Ele diz que está com erro na minha última função e não sei o que pode ser.

12 respostas

Oi Marcelo tudo bem?

Poderia colocar, por gentileza, colocar o código do seu projeto no github. Assim podemos analisar melhor o que está acontencendo.

podeixar vou colocar sim.

Ok, fico no aguardo!

Boa tarde, Marcelo! Como vai?

Qual a mensagem de erro que aparece no console do desenvolvedor?

Gabriel Leite isso

Unexpected end of input

E o erro da nessa função

function calculaImc(peso, altura) {
    var imc = 0;
    imc = peso / (altura * altura);
    return imc.toFixed(2);
}

André está aí no Github https://github.com/Marcelosilva10/javascriptAula5

solução!

Perfeito, Marcelo! Com o log do erro eu percebi qual é o problema!

Veja que no arquivo CalculaImc.js vc faz um for, contudo faltou fechar o corpo do último if dentro desse for!

O seu código está assim:

// CalculaImc.js

var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutricionista";

var pacientes = document.querySelectorAll(".paciente");

for (var i = 0; i < pacientes.length; i++) {

    // Restante do código omitido.

    if (pesoEhValido && alturaEhValida) {
        var imc = calculaImc(peso,altura);
        imcTd.textContent = imc;
}

function calculaImc(peso, altura) {
    var imc = 0;
    imc = peso / (altura * altura);
    return imc.toFixed(2);
} 

E deveria estar assim:

// CalculaImc.js

var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutricionista";

var pacientes = document.querySelectorAll(".paciente");

for (var i = 0; i < pacientes.length; i++) {

    // Restante do código omitido.

    if (pesoEhValido && alturaEhValida) {
        var imc = calculaImc(peso,altura);
        imcTd.textContent = imc;
    } // Faltou fechar o corpo do if com essa chave.
}

function calculaImc(peso, altura) {
    var imc = 0;
    imc = peso / (altura * altura);
    return imc.toFixed(2);
} 

Veja se com isso o seu problema é resolvido e as coisas funcionam como vc esperava.

Dica: Sempre que tiver um problema com código HTML, JS ou CSS dê uma olhada no console do navegador pois lá é que saem os logs de erro quando eles ocorrem! E com esses logs fica mais fácil sacar o que está acontecendo!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

André atualizei o Github

vlwww

Era só isso mesmo, Marcelo?

sim obrigado Gabriel.

Opa! Por nada, Marcelo! Sempre que tiver qualquer dúvida é só mandar aqui no fórum da Alura!

Grande abraço e bons estudos, meu aluno!