Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao adicionar pacientes, campos sempre inválidos

Não consigo mais adicionar pacientes, sempre que clico no botão, independente se tem ou não algo nos campos ele sempre dá o erro falando que o campo está inválido, também está dando 2 erros no console

Erros no console:

form.js:82 Uncaught TypeError: Cannot read property 'length' of undefined
    at validaPaciente (form.js:82)
    at HTMLButtonElement.<anonymous> (form.js:13)

código do "form.js":

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

    var form = selecionaDado(document, "#form-adiciona")

    // Extraindo informacoes do paciente do form
    var paciente = obtemPacienteDoFormulario(form)

    // Cria Tr e Td do paciente
    var pacienteTr = montaTr(paciente)

    var erros = validaPaciente(paciente)

    if(erros.length > 0){
        exibeMensagemDeErro(erros)
        return
    }

        // Adicionando o paciente na tabela
        var tabela = selecionaDado(document, "#tabela-pacientes")
        adicionaFilho(tabela, pacienteTr)
        form.reset()
        var mensagemErro = selecionaDado(document, "#mensagens-erro")
        mensagemErro.innerHTML = ""



})

function exibeMensagemDeErro(erros){
    var ul = selecionaDado(document, "#mensagens-erro")
    ul.innerHTML = ""
    erros.forEach(function(erro){
        var li = document.createElement("li")
        li.textContent = erro
        adicionaFilho(ul, li)
    })
}

function obtemPacienteDoFormulario(form){

    var paciente = {
        nome: form.nome.value,
        peso: form.peso.value,
        altura: form.altura.value,
        gordura: form.gordura.value,
        imc: calculaImc(form.peso.value,form.altura.value)
    }
    return paciente
}

function montaTr(paciente){
    var pacienteTr = document.createElement("tr")
    pacienteTr.classList.add("paciente")

    adicionaFilho(pacienteTr, montaTd(paciente.nome, "info-nome"))
    adicionaFilho(pacienteTr, montaTd(paciente.peso, "info-peso"))
    adicionaFilho(pacienteTr, montaTd(paciente.altura, "info-altura"))
    adicionaFilho(pacienteTr, montaTd(paciente.gordura, "info-gordura"))
    adicionaFilho(pacienteTr, montaTd(paciente.imc, "info-imc"))

    return pacienteTr
}

function montaTd(dado, classe){

    var td = document.createElement("td")
    td.classList.add(classe)
    td.textContent = dado
    return td
}

function adicionaFilho(tr, td){
    return tr.appendChild(td)
}

function validaPaciente(){

    var erros = []

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

    if(!validaPeso(paciente.peso)){
        erros.push("O peso é inválido!")
    }

    if(!validaAltura(paciente.altura)){
        erros.push("A altura é inválida!")
    }

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

    return erros
}
1 resposta
solução!
Removido a pedido do usuario.