Javascript 本地存储在页面重新加载后不保留数据
我试图在重新加载后将数据保留在本地存储中,但它不起作用 这是我的尝试Javascript 本地存储在页面重新加载后不保留数据,javascript,html,local-storage,Javascript,Html,Local Storage,我试图在重新加载后将数据保留在本地存储中,但它不起作用 这是我的尝试 <script> window.onbeforeunload = function() { localStorage.setItem(name, $('#inputName').val()); } window.onload = function() { var name = localStorage.getItem(name); if (name !== null) $('#inp
<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>
window.onbeforeunload=函数(){
localStorage.setItem(名称,$('#inputName').val();
}
window.onload=函数(){
var name=localStorage.getItem(名称);
if(name!==null)$('#inputName').val(name);
警报(名称);
}
在表单上输入数据后刷新页面时,它会不断发出null警报。请在卸载前的
中协助,名称是窗口的名称(因为您没有给它任何其他值,浏览器有一个全局名称属性,它是窗口的名称-通常为空)
在这方面:
var name = localStorage.getItem(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的观点,如果您不想在第一次访问页面时发出警报null
,则需要将警报放入if
的正文中:
window.onload = function() {
var name = localStorage.getItem("your-setting-name");
if (name !== null) {
$('#inputName').val(name);
alert(name);
}
};
否则,它将在第一次访问时提醒null
,然后不管最后一个值是什么
(还请注意,我添加了一些缺少的;
。自动分号插入将添加这些特定的分号,但这是一种错误更正机制,因此我建议不要依赖它。)
其他问题:
- 您正在使用jQuery函数,但在页面上没有显示任何包含jQuery的脚本标记
- 在
标记之前有结束标记
以下是对上述问题的修正(不能将堆栈片段用于本地存储):完整工作页面:
<!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>
例子
window.onbeforeunload=函数(){
setItem(“您的设置名称,$(“#inputName”).val();
};
window.onload=函数(){
var name=localStorage.getItem(“您的设置名称”);
如果(名称!==null){
$('#inputName').val(名称);
警报(名称);
}
};
变量名称
尚未启动,但您已将其用作值引用。也许正是因为这个,它工作得不好
在此解决方案中,您可以单独引用本地存储项,而无需使用变量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>
window.onbeforeunload=函数(){
localStorage.setItem('myItem',$('#inputName').val());
}
window.onload=函数(){
var name=localStorage.getItem('myItem');
if(name!==null)$('#inputName').val(name);
警报(名称);
}
您是否正确设置了该值?localStorage.setItem('name',val)localStorage的键应该是字符串。以上是完整的MineStorage片段。这是否准确?您的脚本标记不在标题中
?或者html,你打字比我快:)@MarkSchultheiss:-)这是我妈妈在高中给我的第二个最好的建议:“你喜欢电脑,去上打字课。”同样的结果,我也建议你习惯用{}
和if()
as警报将始终激发,无论条件如何。执行此操作时未激发警报>>>>>>if(name!==null){$('#inputName').val(name);警报(name);}它不会在页面上保留数据refresh@Abel:为什么?你改变了什么?你为什么要改变它?代码转储不是有用的答案,特别是当它们只是复制了一个已有的答案并有解释的时候。“如果它有效”,请解释为什么你在这里猜测。