【问题标题】:How can I store an input value in web local storege using javascript or jquery?如何使用 javascript 或 jquery 将输入值存储在 Web 本地存储中?
【发布时间】:2019-10-12 05:27:21
【问题描述】:

我有如下输入。 我想在页面刷新后保持它的值。 请注意,我有 name 属性,而不是 class 或 ID。

<input type="text" name="name" onkeyup="saveValue(event)"/> 
<input type="text" name="age" onkeyup="saveValue(event)"/> 
<script type="text/javascript">
var nameArr = ["name"];
nameArr.forEach(function(el){
  document.getElementsByName(el)[0].value = getSavedValue(el);  
})

function saveValue(e) {
  var name = e.target.name;
  var val = e.target.value;
  localStorage.setItem(name, val);
}

function getSavedValue(v) {
  if (!localStorage.getItem(v)) {
    return "";
  }
  return localStorage.getItem(v);
}
</script>

它只适用于 1 个输入。我想要一个适用于无限数量输入的东西。

【问题讨论】:

标签: javascript html


【解决方案1】:

saveValue的参数改为event

&lt;input type="text" name="name" onkeyup="saveValue(event)"/&gt;

由于有很多不同名称的元素,所以维护一个数组:

var nameArr = ["name"]; // Add more elements here
nameArr.forEach(function(el){
  document.getElementsByName(el)[0].value = getSavedValue(el);  
})

saveValue 内部使用e.target,而不是e

var name = e.target.name;
var val = e.target.value;

这些应该可以使代码正常工作。这是一个有效的Codepen

【讨论】:

    【解决方案2】:

    document.getElementsByName("name") 返回一个数组。 如果您确定只有一个名为“name”的元素 然后使用

    document.getElementsByName("name")[0].value = getSavedValue("name");
    

    【讨论】:

    • 有更多这样的输入,但不能正常工作
    • 你能把整个代码贴出来吗?以便我们能够找出问题
    猜你喜欢
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    相关资源
    最近更新 更多