En un curso que estoy tomando, mi profesor escribió el siguiente código para enviar datos desde un formulario cuando se presiona el botón Enviar. Almacena esto en sessionStorage y luego presenta los mensajes recibidos debajo del formulario. Me aseguré de copiarlo exactamente y el mío no funciona. Parece que se debe a que .fullName, .email, .feedbackType y .comment no tienen asignado un tipo. Cuando ejecuté el archivo de código de los profesores desde mi vscode y lo verifiqué en el navegador, funcionó bien. Mi trabajo es idéntico al de él, salvo algunos estilos CSS diferentes. Actualmente solo está poniendo indefinido para cada elemento
function submitMessage(event) { event.preventDefault(); const email = document.getElementById('email').value; const fullName = document.getElementById('fullName').value; const feedbackType = document.getElementById('feedbackType').value; const comment = document.getElementById('comment').value; const messageObject = { email, fullName, feedbackType, comment, }; let currentMessages = []; if (window.sessionStorage.getItem('messages')) { currentMessages = JSON.parse( window.sessionStorage.getItem('messages') ); } currentMessages.push({ messageObject }); /*temporary fix, find a solution for this error, .push not working/recognised. Code matching lectures is currentMessages.push(messageObject)*/ window.sessionStorage.setItem( 'messages', JSON.stringify(currentMessages) ); renderMessages(); } function renderMessages() { let currentMessages = []; if (window.sessionStorage.getItem("messages")) { currentMessages = JSON.parse( window.sessionStorage.getItem("messages") ); } let listItems = []; for (let i = 0; i < currentMessages.length; i++) { let listItem = " "; const currentMessage = currentMessages[i]; listItem += `<dt>${currentMessage.fullName} - ${currentMessage.email}</dt>`; listItem += `<dd>${currentMessage.feedbackType}: ${currentMessage.comment}</dd>`; listItem += `<br />`; listItems.push(listItem); } let descList = document.getElementById('currentMessages'); descList.innerHTML = listItems.join(''); } renderMessages();