Problemas na validação do paciente: Quando digito um paciente válido no form ele adiciona, tudo certo. Mas quando digito um paciente inválido, apesar de não o adicionar na tabela e exibir as mensagens de erro no console, ele não exibe as mensagens de erro na ul. Ele exibe o seguinte erro no console:
form.js:33 Uncaught TypeError: Cannot read properties of null (reading 'appendChild')
at form.js:33:8
at Array.forEach (<anonymous>)
at exibeMensagensDeErro (form.js:30:10)
at HTMLButtonElement.<anonymous> (form.js:16:5)
As partes do meu código relacionadas à validação estão digitas conforme o professor digitou, não consigo encontrar o erro:
var erros = validaPaciente(paciente); // variável de erro na validação do paciente
if(erros.length > 0){ // se os tds de altura ou de peso do paciente forem inválidas,
console.log(erros);
exibeMensagensDeErro(erros); // exiba as mensagens de erro necessárias
return; // não adicione o paciente na tabela
}
Também essa:
function exibeMensagensDeErro(erros) { // função que exiba as mensagens de erro necessárias e põe no HTML com li na ul
var ul = document.querySelector("mensagens-erro"); // variável que traz do HTML a ul das mensagem de erro
erros.forEach(function(erro) { // para cada item do array de erro,
var li = document.createElement("li"); // crie um novo li
li.textContent = erro; // exiba a mensagem de erro
ul.appendChild(li); // atribui o novo li à ul no HTML
});
}
E essa:
function validaPaciente(paciente){ // função que valida os tds de altura e peso do paciente
var erros = []; // cria uma variável que contém as mensagens de erro
if(!validaPeso(paciente.peso)){ // se o peso do paciente for inválido,
erros.push("O peso é inválido"); // adicione à variável de erros e exiba:
}
if(!validaAltura(paciente.altura)){ // se a altura do paciente for inválida,
erros.push("A altura é inválida"); // adicione à variável de erros e exiba:
}
return erros; // exiba os erros caso haja necessidade
}