作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将问题从 JSON 加载到我的 EJS 模板中,并希望从 localStorage 填充每个字段。下面保存每个下拉列表、文本和 slider 元素的最后一个值:
var select = document.getElementsByTagName('select');
for (var i = 0; i < select.length; i++){
select[i].value = localStorage.getItem(i);
}
jQuery("select").change(function () {
for (var i = 0; i < select.length; i++){
localStorage.setItem(i, select[i].value);
}
});
我对所有 “input”
标签重复这个。问题是 select
值也会传递给 text
和 slider
— 反之亦然(即如果我为 text 输入值
和 slider
,它们会覆盖 select
值,除非它们留空)。
我的最终目标是保存每个表单域的最新值,这样当我刷新页面时我的条目就不会丢失。
最佳答案
创建一个代表您保存的值的单个 localStorage 条目会优雅得多,而不是用每个字段的许多条目污染 LS。我会推荐这样的东西:
function save() {
const selects = document.querySelectorAll('select');
// select other element types
// ...
const selectValues = [...selects].map(select => select.value);
const textValues = [...textInputs].map(textInput => textInput.value);
const sliderValues = [...sliderInputs].map(sliderInput => sliderInput.value);
const savedObj = { selectValues, textValues, sliderValues };
localStorage.savedFormValues = JSON.stringify(savedObj);
}
那样的话,您只需在本地存储中创建一个条目,并且每个条目类型都截然不同。然后,要获取值,只需反向执行相同的操作即可:
function populate() {
const selects = document.querySelectorAll('select');
// ...
const { selectValues, textValues, sliderValues } = JSON.parse(localStorage.savedFormValues);
selectValues.forEach((selectValue, i) => selects[i].value = selectValue);
// ...
关于javascript - 使用本地存储预填表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50012540/
在使用网站、加载内容等一段时间后,此消息显示“Fill:SelectCommand.Connection 属性尚未初始化”!我认为这是因为 sql 连接,但不确定......我想知道我能做些什么来防止
我是一名优秀的程序员,十分优秀!