Estoy tratando de guardar los valores de entrada enviados a través del formulario en el almacenamiento local en forma de matriz, pero una vez que el formulario se envía nuevamente, el valor guardado en el almacenamiento local se cambia con el nuevo valor enviado como el
function bookDetails(bookName,bookAuthor,bookType) { this.name = bookName; this.author = bookAuthor; this.type = bookType; } let libraryForm = document.getElementById("bookForm"); libraryForm.addEventListener("submit", libraryBooksDetails); function libraryBooksDetails(e,index) { e.preventDefault(); console.log("The book details have been submitted"); let bookName = document.getElementById("bookName").value; let bookAuthor = document.getElementById("author").value; let bookType; let fiction = document.getElementById("Fiction"); let programming = document.getElementById("ComputerProgramming"); let personal = document.getElementById("PersonalDevelopement"); if(fiction.checked){ bookType = fiction.value; } else if(programming.checked){ bookType = programming.value; } else if(personal.checked){ bookType = personal.value; } // BookDetails Object let book = new bookDetails(bookName,bookAuthor,bookType); let bookData = "" bookData = bookData || []; let nameOfBooks = bookData.concat(bookName) // let nameOfBooks = bookData // nameOfBooks.push(book.bookName); localStore.setItem("books",JSON.stringify(nameOfBooks)) console.log(book); let display = new Display() display.add(book); display.clear(); }Gracias
No estoy seguro de entender la pregunta por completo porque está configurando el valor let book = new bookDetails pero eso no es lo que está almacenando en el almacenamiento local.
// First time bookData value is set, this is always an empty string let bookData = ""; // Since empty string is a falsey value, bookData value is re-set to an empty array bookData = bookData || []; // nameOfBooks is initialised as an array with one value of bookName let nameOfBooks = bookData.concat(bookName); // books key in local storage is a stringified array with one item localStore.setItem("books", JSON.stringify(nameOfBooks)); localStorage.setItem(key, value) siempre reemplazará el valor existente en esa clave. Si desea agregar al valor almacenado, primero obtenga el valor y analícelo antes de agregar el nuevo valor.
const oldValue = localStorage.getItem('books'); const parsed = JSON.parse(oldValue); const newValue = parsed.concat(nameOfBooks); localStorage.setItem('books', JSON.stringify(newValue));