javascript - localStorage 第二个参数不接受 input.value
问题描述
我正在使用 localStorage 来存储一些值,但它不适用于我已确认是字符串的输入。它适用于像“鸡”这样的硬编码字符串,但不适用于 input.value 这是我的代码:https ://codepen.io/levinson2504/pen/gObzZON?editors=0011
let menu = [];
const menuDiv = document.querySelector("#menu");
const inputName = document.querySelector("#item-name");
const inputPrice = document.querySelector("#item-price");
document.querySelector("#add-btn").addEventListener("click", addItem);
document.querySelector("#del-btn").addEventListener("click", () => delItem(menu.length - 1));
function render(items) {
menuDiv.innerHTML = "";
[inputName, inputPrice].forEach(input => input.value = "");
items.forEach((item, index) => menuDiv.append(menuElement(item, index)));
}
function menuElement(item, index) {
const menuText = document.createElement("span");
menuText.innerText = `${item.itemName} - ${item.itemPrice}`;
const delBtn = document.createElement("button");
delBtn.innerText = "delete item";
delBtn.addEventListener("click", () => delItem(index));
const itemDiv = document.createElement("div");
[menuText, delBtn].forEach(el => itemDiv.append(el));
return itemDiv;
}
function delItem(index) {
menu.splice(index, 1);
render(menu);
}
function addItem() {
menu.push({
itemName: inputName.value,
itemPrice: inputPrice.value
});
render(menu);
let item = "chicken"
localStorage.setItem("itemName", item);
localStorage.setItem("itemPrice", inputPrice.value );
console.log(localStorage.getItem("itemName"));
console.log(localStorage.getItem("itemPrice"));
}
解决方案
您的render
方法会清除您的输入值。由于您是render
在设置 localStorage 中的值之前调用的,因此您只会得到一个空值。在调用之前将值存储在 localStorage 中render
:
function addItem() {
menu.push({
itemName: inputName.value,
itemPrice: inputPrice.value
});
let item = "chicken"
localStorage.setItem("itemName", item);
localStorage.setItem("itemPrice", inputPrice.value);
console.log(localStorage.getItem("itemName"));
console.log(localStorage.getItem("itemPrice"));
render(menu);
}
推荐阅读
- javascript - 每个产品的每次点击总和
- javascript - 提交后表格清空
- reactjs - 反应分析器中的提交太多而没有渲染
- flutter - Flutter:让 Text in Text 小部件在新行上溢出
- python - 如何为每个句子(行)创建标记词(列)的数据框?
- ios - 我的应用程序是否使用 UIApplication.shared.openURL 调用 HTTPS?
- python - 如何让轮廓第一个坐标始终位于左上角?
- c++ - ThreadSanitizer 检测到数据竞争,问题出在哪里?
- javascript - 检测公司名称的正则表达式
- java - 错误错误:方法没有覆盖或实现超类型中的方法