Buenas tardes, espero alguna orientación. Soy nuevo en JavaScript y estoy luchando con un proyecto. Se nos ha pedido que almacenemos nuevas entradas en una aplicación de sitio web, que una vez que se agregó se almacenó en el almacenamiento local.
Esto es lo que tengo hasta ahora, pero no sé dónde me estoy equivocando para almacenar esto.
La primera sección rodeada por ** funciona bien (aunque no almacena los enteros). Es el último bit donde estoy tratando de agregar un nuevo código para almacenar el mensaje e invocar el detector de eventos que no funciona.
Cualquier orientación sería muy apreciada.
**function addTextEntry(itemKey, initialText, isNewEntry) { // Create a text element to edit the entry var textElement = document.createElement("textarea"); textElement.rows = 5; textElement.placeholder = "(new entry)"; // Set the textarea's value to the given text (if any) textElement.value = initialText; // Add a section to the page containing the textarea addSection(itemKey, textElement); // If this is a new entry (added by the user clicking a button) // move the focus to the textarea to encourage typing if (isNewEntry) { textElement.focus(); }** // Create an event listener to save the entry when it changes function saveEntry() { // A new version of this function is created every time addTextEntry is called, // so it can access all the variables available in this call to addTextEntry console.log("saveEntry called with variables in scope:", { itemKey, initialText, isNewEntry, textElement, }); document.getElementById(initialText); item = makeTextItem(initialText); localStorage.setItem(itemKey); textElement.addEventListener("initialText", saveEntry); } }El método setItem toma 2 parámetros:
keyName : el nombre de la clave en el almacenamiento localkeyValue : el valor de una clave dada En su código, está pasando solo un parámetro itemKey . También debe pasar el valor de esa clave como segundo parámetro.
document.getElementById(initialText); Esta declaración no hace nada con el resultado. Es posible que desee asignarlo a un valor como const textElement = document.getElementById(initialText);
item = makeTextItem(initialText); Le falta el código para makeTextItem pero eso sigue siendo irrelevante ya que el item no se usa en ninguna parte del código debajo de él.
localStorage.setItem(itemKey); setItem toma DOS parámetros, la clave y lo que desea guardar storage.setItem(keyName, keyValue);
textElement.addEventListener("initialText", saveEntry); El primer argumento de addEventListener debe ser un evento válido. addEventListener(type, listener);