2017-04-08 47 views
0

我想在重装后localStorage的保留数据,但它不工作 这是我在它保留在表单上输入数据后刷新页面,尝试localStorage的不保留页面重载后的数据

<script> 
window.onbeforeunload = function() { 
    localStorage.setItem(name, $('#inputName').val()); 

} 


window.onload = function() { 

    var name = localStorage.getItem(name); 
    if (name !== null) $('#inputName').val(name); 
    alert(name); 


} 

</script> 
<html> 

<body> 

<input type="text" id="inputName" placeholder="Name" required> 


</body> 

</html> 

警告空。好心帮助

+0

您是否正确设置了值? localStorage.setItem('name',val) – RemyaJ

+1

localstorage的键应该是字符串。 – charlietfl

+0

以上是我的完整片段 – parker

回答

1

在你onbeforeunloadname是窗口的名称(因为你没有给它任何其他值,和浏览器有一个全球性的name属性,它是窗口  —它通常是空白的名称)。

在这一行:

var name = localStorage.getItem(name); 

...这是undefined,因为var name的。

你需要使用一个合适的名字,例如:

window.onbeforeunload = function() { 
    localStorage.setItem("your-setting-name", $('#inputName').val()); 
}; 

window.onload = function() { 
    var name = localStorage.getItem("your-setting-name"); 
    if (name !== null) $('#inputName').val(name); 
    alert(name); 
}; 

还要注意charlietfl的oint,如果你不希望在页面第一次访问提醒null,你需要把alertif的身体:

window.onload = function() { 
    var name = localStorage.getItem("your-setting-name"); 
    if (name !== null) { 
     $('#inputName').val(name); 
     alert(name); 
    } 
}; 

否则,它会提醒null上的首次访问,然后不管最后一个值在其他方面。

(另请注意,我还添加了一些失踪;。自动分号插入会增加这些特定的,但它是一个纠错机制,所以我建议不依赖于它。)


其他问题:

  • 你使用jQuery的功能,但并没有表现出任何脚本标记包括在页面上的jQuery。

  • 您已完成</html>标记之前<input ...>标记。


下面是上述固定的(不能使用本地存储堆栈片段)小提琴:https://jsfiddle.net/un86not0/完整的工作页面:

<!doctype html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=Edge"> 
<title>Example</title> 
</head> 
<body> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script> 
window.onbeforeunload = function() { 
    localStorage.setItem("your-setting-name", $('#inputName').val()); 
}; 

window.onload = function() { 
    var name = localStorage.getItem("your-setting-name"); 
    if (name !== null) { 
     $('#inputName').val(name); 
     alert(name); 
    } 
}; 
</script> 
<input type="text" id="inputName" placeholder="Name" required> 
</body> 
</html> 
+0

你输入比我快:) –

+0

@MarkSchultheiss :-)我母亲在高中给我的第二好的建议:“你进入电脑,打字课。” –

+0

仍然是相同的结果,警报为空 – parker

-1

变量name还未启动但您已经将其用作值参考。也许这不是很好,因为这个?

在此解决方案中,您可以单独引用本地存储项目而不使用变量name,这可能导致它不起作用。

<script> 
window.onbeforeunload = function() { 
    localStorage.setItem('myItem', $('#inputName').val()); 

} 


window.onload = function() { 

    var name = localStorage.getItem('myItem'); 
    if (name !== null) $('#inputName').val(name); 
    alert(name); 
} 

</script> 
+0

它不保留页面刷新数据 – parker

+0

它警告空.... – parker

+0

@Abel:为什么?你改变了什么?你为什么改变它?代码转储不是*有用*的答案,特别是当他们只复制一个有解释的现有答案时。 –