CODE:
$(document).ready(function () {
window.levelsSaved = 1;
$('#button1').click() {
levelsSaved = [1, 2]
}
function checkLevels() {
localStorage.savedLevels = JSON.stringify(levelsSaved);
if (localStorage.savedLevels == [1, 2]) {
$('#button2').show();
}
}
});
问题:
代码的问题是当你转到本地存储(f12)。
它已经设置为[1,2],甚至没有点击按钮,按钮只是一个占位符,当你完成第一级时,下一个按钮将显示为2级。
它将使用.show()
显示但是当你刷新时我希望第二级按钮保持在那里而不是隐藏。
谢谢你,请看一下jsFiddle它包含更多代码的详细信息,如html和CSS。
答案 0 :(得分:0)
JSON.stringify([1, 2])
给了我们"[1,2]"
。然后,如果将其与数组进行比较,则会导致调用数组的toString
。 Array#toString
只是Array#join
,它会给你"1,2"
(注意缺少[]
)。所以比较永远不会成真。
如果你想比较它们,并且它们总是简单的数字,你可以在数组上使用JSON.stringify
并比较字符串;或者如果它们比这更复杂,你将需要使用几种阵列比较算法中的任何一种。
免费字符串示例:
var items = [1, 2];
snippet.log(JSON.stringify(items)); // [1,2]
snippet.log(String(items)); // 1,2
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
根本不清楚为什么你想要一个数组,但这里有一个如何使用本地存储存储和检索数组的示例:Live Copy (Stack Snippets禁止本地存储,所以JSBin上的实时副本已经结束了
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
</head>
<body>
<script>
(function() {
"use strict";
// Get the array from local storage. If we've never stored
// an array before, `localStorage.theArray` will be
// `undefined`, so we use || "[]" to parse a blank array.
var theArray = JSON.parse(localStorage.theArray || "[]");
// Show its contents
showArray("Array from local storage:", theArray);
// Add a random number to the end
theArray.push(Math.floor(Math.random() * 10));
// Save the array
localStorage.theArray = JSON.stringify(theArray);
// Show what we saved to local storage
showArray("Array we saved to local storage:", theArray);
display("Now hit refresh and you'll see the stored copy has the number we added.");
function showArray(msg, a) {
display(msg + " (" + a.length + ")");
a.forEach(function(entry, index) {
display(index + ": " + entry);
});
}
function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}
})();
</script>
</body>
</html>