如何使切换变量持久化



我正在开发一个测试页面,在这个页面上我有一个计时器,我希望它能够打开或关闭,这样就不会分散用户的注意力,并在提交答案后保存设置。计时器函数起作用,并调用localStorage.getItem((。但当我用布尔值尝试下面的操作以查看是否单击了showHideTime((按钮时,计时器总是在下一个问题出现时显示。当页面加载新问题时,控制台总是记录为true。

<script>
var clickCookie = 'clicked';
var clicked = localStorage.getItem(clickCookie);
console.log(clicked);
function showHideTimer(){
if(clicked==true){
document.getElementById("testHeaderRight").style.color = "black";
clicked=false;
localStorage.setItem(clickCookie, clicked);
console.log(clicked);
return clicked;
}
else{
document.getElementById("testHeaderRight").style.color = "white";
clicked=true;
localStorage.setItem(clickCookie, clicked);
console.log(clicked);
return clicked;
}
};
window.onload = function(){
if(clicked===null){
localStorage.setItem(clickCookie, false);
} else {
showHideTimer(clickCookie);
}
};
</script>
<body>
<button id="showHideTimer" onclick="showHideTimer()">Toggle Timer</button>
<div id="testHeaderRight">
Time Remaining :
<span id="time"></span>
</div>
<script>
var cookieName = 'startTimer';
var savedSeconds = localStorage.getItem(cookieName);
function startTimer(duration, display) {
var timer = duration, seconds;
setInterval(function () {
seconds = parseInt(timer);
display.textContent = secondsToHms(seconds);
var runningTime = (parseInt(seconds));
localStorage.setItem(cookieName, runningTime);
}, 1000);
}

window.onload = function () {
var startTime = 7200,
display = document.querySelector('#time');
if (savedSeconds === null){
startTimer(startTime, display);
} else {
startTimer(savedSeconds, display);
}
};
</script>
</body>

我试着将window.onload调用移到与计时器相同的函数中,因为它运行正常,但似乎没有什么区别。我试着切换点击=真/假;变量,以确保我不会将自己与布尔值混淆,并且当单击按钮时,它们可以在控制台中自由切换。我尝试将showHideTime((函数的返回值更改为localStorage.setItem(单击Cookie,单击(;

当您从存储中取出项目时,它是一个字符串"true",而不是布尔值。

所以你的CCD_ 2比较永远不会通过;false";路径。

最新更新