我正在尝试获取键1的本地存储值,将其设置为选中复选框的值,但我的javascript函数返回的值在本地存储中显示为[object object]。非常感谢任何帮助,谢谢你。
<html>
<head>
<script type="text/javascript">
function topic_1_status(){
var status = {
get_value: function(){
return this.value;
}
};
localStorage.setItem(1, status);
}
</script>
</head>
<body>
<div>Topic no.1 </div>
<form action="">
<input type="checkbox" value="learnt" onclick="topic_1_status()" /> Learnt
<input type="checkbox" value="memorised" onclick="topic_1_status()" /> Memorised
<input type="checkbox" value="understood" onclick="topic_1_status()" /> Understood
<input type="checkbox" value="unlearned" onclick="topic_1_status()" /> Unlearned
</body>
</html>
答案 0 :(得分:1)
您正在获取“对象对象”,因为您存储了对象“status”而不是复选框的值。
此修改应该可以为您提供所需的结果。
**On the html where you call your javascript**
<input type="checkbox" value="learnt" onclick="topic_1_status(this);" />
**As you can see above im passing 'this' to the function
和javascript
//On the javascript
function topic_1_status(elem){
if(!elem.checked){//You may also want to check that you are checking it rather than unchecking
var checkboxValue = elem.value;
localStorage.setItem(1,checkboxValue);
}
}
还想到提一下,您似乎想要使用单选按钮而不是复选框,因为您计划一次只存储一个项目。
答案 1 :(得分:0)
您的代码正在将值设置为status。 status是一个复杂的对象。本地存储只能存储字符串。通常你事先将其序列化为JSON,但这不是你想要的。我在想你只想做localStorage.setItem(1,this.value);请注意,您绑定了4个不同的复选框,并始终写入一个值“1”。我认为你不想这样做。