在你onbeforeunload
,name
是窗口的名称(因为你没有给它任何其他值,和浏览器有一个全球性的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
,你需要把alert
在if
的身体:
window.onload = function() {
var name = localStorage.getItem("your-setting-name");
if (name !== null) {
$('#inputName').val(name);
alert(name);
}
};
否则,它会提醒null
上的首次访问,然后不管最后一个值在其他方面。
(另请注意,我还添加了一些失踪;
。自动分号插入会增加这些特定的,但它是一个纠错机制,所以我建议不依赖于它。)
其他问题:
下面是上述固定的(不能使用本地存储堆栈片段)小提琴: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>
您是否正确设置了值? localStorage.setItem('name',val) – RemyaJ
localstorage的键应该是字符串。 – charlietfl
以上是我的完整片段 – parker