当this.value返回值时,本地存储值是[对象对象]。

时间:2012-09-01 17:26:14

标签: this local-storage

我正在尝试获取键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>

2 个答案:

答案 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”。我认为你不想这样做。