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:为什么?你改变了什么?你为什么要改变它?代码转储不是有用的答案,特别是当它们只是复制了一个已有的答案并有解释的时候。“如果它有效”,请解释为什么你在这里猜测。