无法将值设置为本地存储
Unable to set values to local Storage
我的代码是这样的
var searchPreferences = new function() {
this.setValues = localStorage.setItem('searchPreferenceData', JSON.stringify({
clientName: document.getElementById('clientName').value,
carrier: document.getElementById('carrierName').value,
status: document.getElementById('ShipmentStatus').value,
genericView: document.getElementById('ddl_view').value
}));
this.getData = JSON.parse(localStorage.getItem('searchPreferenceData'));
this.showValues = new function() {
document.getElementById('clientName').value = GetData.clientName;
}
}
我像这样调用这个函数
searchPreferences.setValues();
在按钮单击内。但是不会向本地存储添加任何值。谁能指出我做错了什么?
你已经实例化了函数。 你需要像对象的成员而不是函数一样调用它
我想
编辑我的答案来解释更多:
代码看起来像是单例设计模式的实现,但方式错误。
请记住,在以相同的代码语句赋值的同时实例化函数不是一个好主意。实例化函数时,成员类型变为"数据"而不是"函数":
typeof searchPreferences.getData == "object"
我的意思是像这样的陈述
var fuc = new function () {}
执行函数并将返回的结果分配给func
。你
认为如果我们像你一样在定义searchPreferences
后立即打电话给searchPreferences.getData
,我们会得到什么?
您希望它返回 null,因为您尚未向 localStorage 设置任何内容,但它返回一个包含输入值的对象。
实例化它,或者以最好的方法,只需定义一个函数并在需要时调用它:
var searchPreferences = function() {}
问题是您在需要使用函数之前使用 new
关键字来实例化函数。 结果变成一个对象,存储在searchPreferences
中。 这不是一个被调用的函数
setValues
不是一个函数。它设置为对setItem
调用的结果,该结果将未定义。
您的控制台中可能出现如下错误:
未捕获的类型错误:未定义不是函数
将其包装在一个函数中:
this.setValues = function() {
localStorage.setItem('searchPreferenceData', JSON.stringify({
clientName: document.getElementById('clientName').value,
carrier: document.getElementById('carrierName').value,
status: document.getElementById('ShipmentStatus').value,
genericView: document.getElementById('ddl_view').value
})
};
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var searchPreferences = new function() {
this.setValues =function(){
try{
alert("i m in");
localStorage.setItem('searchPreferenceData', JSON.stringify({
clientName: document.getElementById('clientName').value,
carrier: document.getElementById('carrierName').value,
status: document.getElementById('ShipmentStatus').value,
genericView: document.getElementById('ddl_view').value
}));
}catch(err){alert(err.message);}
}
this.getData =function(){
return JSON.parse(localStorage.getItem('searchPreferenceData'));
}
this.showValues = function() {
try{
document.getElementById('clientName').value = this.getData().clientName;
}catch(err){alert(err.message)}
}
}
</script>
</head>
<body>
<input type="text" id="clientName" />
<input type="text" id="carrierName" />
<input type="text" id="ShipmentStatus" />
<input type="text" id="ddl_view" />
<button onclick="searchPreferences.setValues()">Store data</button>
<button onclick="searchPreferences.showValues()">Get data</button>
</body>
</html>
相关文章:
- 如何在ExtJs4应用程序上为视图、存储和模型设置自定义文件夹名称
- 为数据库存储设置角度日期格式
- jQuery 设置和获取下拉列表和输入的本地存储数据
- 设置 HTML 自定义属性与在 ID 属性中存储信息
- 根据下拉值设置本地存储
- 如何在引导模式上设置本地存储
- 如何保存从单击this.nameClass动态设置的本地存储
- AngularJS设置本地存储(object json)
- 本地存储设置初始数据
- 将本地存储项设置为值'span'标签
- 如何读取存储在图像的数据src中的URL,并在另一个img控制器的src中设置该URL onclick
- 将对象设置为Chrome存储
- 设置存储在变量中的元素的属性
- 如何将javascript变量设置为php变量并将其存储在数据库中
- 如何将 HTML 的本地存储设置为整数而不是字符串
- 在量角器测试中从本地存储设置项目
- HTML5;绕过“;本地存储设置
- 不能与本地存储设置值
- 使用本地存储设置视图 MVC 中的值
- 如何 如果未定义,请将本地存储设置为 0