我的问题是当我运行此代码时出现意外的数字错误。这个网站对我帮助很大,但似乎无法理解这种情况发生的原因。
<html>
<head>
<title>help</title>
<script>
var object1 ={
number:0,
name:" ",
list:[ ]}
var storedAt = 2;
var item="";
function doStuff() {
object1.list.push("hello");
object1.list.push("world");
object1.number = 5;
object1.name = "des"
item = JSON.stringify(object1)
store();
}
function store() {
localStorage.setItem("item"+storedAt,item+storedAt); for (var i=0;i<localStorage.length; i++){ var key = localStorage.key(i); if (key.substring(0,1) =="") { var value = localStorage.getItem(key); }} return;}
function getBack() {
var di =JSON.parse( localStorage.getItem("item"+storedAt))
alert("display = "+di.number);
}
</script>
</head>
<body>
<input type="button"id="doStuff"value = "Do Stuff" onclick = doStuff();>
<input type="button"id="getBack"value = "get Back" onclick = getBack();>
</body>
</html>
当我运行此问题时,问题显示在警报中。
答案 0 :(得分:1)
将此localStorage.setItem("item"+storedAt,item+storedAt);
更改为此localStorage.setItem("item"+storedAt,item);
,现在它应该更有意义。
如果没有,那么你正在做的是用storedAt
值改变json字符串的状态,然后当你试图解析它时,JSON.parse会抛出错误,因为json不再有效。
答案 1 :(得分:0)
这有效:
<html>
<head>
<title>help</title>
<script>
var object1 ={
number:0,
name:" ",
list:[ ]}
var storedAt = 2;
var item="";
function doStuff() {
object1.list.push("hello");
object1.list.push("world");
object1.number = 5;
object1.name = "des"
item = JSON.stringify(object1)
store();
}
function store() {
localStorage.setItem("item"+storedAt, item);
for (var i=0;i<localStorage.length; i++){
var key = localStorage.key(i); if (key.substring(0,1) =="") { var value = localStorage.getItem(key); }} return;
}
function getBack() {
var di =JSON.parse( localStorage.getItem("item"+storedAt))
alert("display = "+di.number);
}
</script>
</head>
<body>
<input type="button"id="doStuff"value = "Do Stuff" onclick = doStuff();>
<input type="button"id="getBack"value = "get Back" onclick = getBack();>
</body>
</html>
当你使用setItem时,你将storedAt附加到Object,而JSON.parse失败,因为它不是有效的对象。