LocalStorage 对象未被渲染
LocalStorage objects are not being rendered
我正在尝试将表单(字段变量)的 localStorage 项呈现到 localstorage,然后让它们在循环中呈现它们。但是项目没有被渲染,只渲染了一个逗号。我似乎无法解决这个错误...
let myLibrary = [];
const addBook = (event) => {
event.preventDefault()
var fields = {
title: document.getElementById("title").value,
author: document.getElementById("author").value,
pages: document.getElementById("pages").value,
checkbox: document.getElementById("checkbox").value
};
myLibrary.push(fields)
localStorage.setItem('books', JSON.stringify(myLibrary));
const data = JSON.parse(localStorage.getItem('books'))
document.getElementById('bookList').innerHTML = data.map(item => {
`<div>
<div>Title: ${item.title}</div>
<div>Author: ${item.author}</div>
<div>Pages: ${item.pages}</div>
</div>`
})
}
您的 map
函数正在返回一个数组,并且在该数组中的元素上没有某种 toString
函数,我想这会给您带来问题。
另一种方法可能是简单地使用 forEach
,像这样:
const bookList = document.querySelector("#bookList");
data.forEach(item =>{
bookList.innerHTML += /* your string here */
})
或者,也许更好,创建您希望附加的实际 DOM 节点,并使用它:
const bookList = document.querySelector("#bookList");
bookList.append(...data.map(/* here, a function to create the actual DOM nodes rather than a string*/) );
这可行,因为您将 DOM 个节点的数组作为附加方法的参数传播:https://devdocs.io/dom/element/append
我正在尝试将表单(字段变量)的 localStorage 项呈现到 localstorage,然后让它们在循环中呈现它们。但是项目没有被渲染,只渲染了一个逗号。我似乎无法解决这个错误...
let myLibrary = [];
const addBook = (event) => {
event.preventDefault()
var fields = {
title: document.getElementById("title").value,
author: document.getElementById("author").value,
pages: document.getElementById("pages").value,
checkbox: document.getElementById("checkbox").value
};
myLibrary.push(fields)
localStorage.setItem('books', JSON.stringify(myLibrary));
const data = JSON.parse(localStorage.getItem('books'))
document.getElementById('bookList').innerHTML = data.map(item => {
`<div>
<div>Title: ${item.title}</div>
<div>Author: ${item.author}</div>
<div>Pages: ${item.pages}</div>
</div>`
})
}
您的 map
函数正在返回一个数组,并且在该数组中的元素上没有某种 toString
函数,我想这会给您带来问题。
另一种方法可能是简单地使用 forEach
,像这样:
const bookList = document.querySelector("#bookList");
data.forEach(item =>{
bookList.innerHTML += /* your string here */
})
或者,也许更好,创建您希望附加的实际 DOM 节点,并使用它:
const bookList = document.querySelector("#bookList");
bookList.append(...data.map(/* here, a function to create the actual DOM nodes rather than a string*/) );
这可行,因为您将 DOM 个节点的数组作为附加方法的参数传播:https://devdocs.io/dom/element/append