1
resposta

Dúvida sobre a função exibeMensagensDeErro!

Como a função exibeMensagensDeErro sabe que tem que mostrar na tela as mensagens de erro que digitamos em validaPaciente? Não entendi onde elas se comunicam e como a exibeMensagensDeErro encontrou o texto das mensagens de erro.

exibeMensagensDeErro:

function exibeMensagensDeErro(erros) {
    var ul = document.querySelector("#mensagens-erro");
    ul.innerHTML = "";
    erros.forEach(function(erro) {
        var li = document.createElement("li");
        li.textContent = erro;
        ul.appendChild(li);
    });
}

validaPaciente

function validaPaciente(paciente) {
    var erros = [];

    if (paciente.nome.length == 0) {
        erros.push("O nome não pode ser em branco");
    }

    if (paciente.gordura.length == 0) {
        erros.push("A gordura não pode ser em branco"); 
    }

    if (paciente.peso.length == 0) {
        erros.push("O peso não pode ser em branco");
    }

    if (paciente.altura.length == 0) {
        erros.push("A altura não pode ser em branco");
    }

    if (validaPeso(paciente.peso)) {

    } else {
        erros.push("O peso é inválido!");
    }

    if (validaAltura(paciente.altura)) {

    } else {
        erros.push("A altura é inválida!");
    }

    return erros;
}

Botão para adicionar:

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

    var paciente = obtemPacienteDoFormulario(form);

    var pacienteTr = montaTr(paciente);

    var erros = validaPaciente(paciente);

    if (erros.length > 0) {
        exibeMensagensDeErro(erros);
        return;
    }

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

    tabela.appendChild(pacienteTr);

    form.reset();

    var mensagensErro = document.querySelector("#mensagens-erro");
    mensagensErro.innerHTML = "";
});
1 resposta

Bom dia! A exibeMensagensDeErro se comunica através do parâmetro que foi passado, exibeMensagensDeErro(erros) entre parenteses você passou seu array de erros para ele, então ele percorre com o forEach, e aqui : var erros = validaPaciente(paciente); você passa sua função que está validando seus pacientes. Espero ter ajudado! Qualquer coisa manda aqui de novo.