我有一個顯示/隱藏 div 部分的切換開關,一切正常。因此,我在 Js 中撰寫了一個函式,用于在頁面重繪 后保存切換狀態。切換狀態已正確存盤,但該部分始終顯示,即使切換保存為關閉。我不明白我錯在哪里,有人幫助我嗎?
小提琴:https ://jsfiddle.net/snake93/s0rx4ube/4/
function save() {
var checkbox = document.getElementById("ck1");
localStorage.setItem("ck1", checkbox.checked);
}
var checked = JSON.parse(localStorage.getItem("ck1"));
document.getElementById("ck1").checked = checked;
$(document).ready(function(){
$(".switch input").on("change", function(e) {
const isOn = e.currentTarget.checked;
if (isOn) {
$(".hideme").show();
} else {
$(".hideme").hide();
}
});
});
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
-webkit-transition: .4s;
transition: .4s;
}
.slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: .4s;
transition: .4s;
}
input:checked .slider {
background-color: #2196F3;
}
input:focus .slider {
box-shadow: 0 0 1px #2196F3;
}
input:checked .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}
/* Rounded sliders */
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}
/*END OF TOGGLE SWITCH*/
.hideme {
padding:20px;
background: blue;
color: white;
font-weight: 800;
text-align: center;
}
<!-- jQuery -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<label class="switch">
<input type="checkbox" id="ck1" onchange="save()">
<span class="slider round hide-off"></span>
</label>
<div class="hideme">Please hide me, but bring me back later ;-)</div>
uj5u.com熱心網友回復:
這是因為只有在按下切換開關時才會檢查 isOn 狀態。您需要在檔案準備好后立即檢查 isOn 狀態。像這樣。
function save() {
var checkbox = document.getElementById("ck1");
localStorage.setItem("ck1", JSON.stringify(checkbox.checked));
}
function isChecked(isOn) {
if (isOn === true) {
$(".hideme").show();
} else {
$(".hideme").hide();
}
}
//for loading
var checked = JSON.parse(localStorage.getItem("ck1"));
document.getElementById("ck1").checked = checked;
console.log(checked);
$(document).ready(function(){
isChecked(checked)
$(".switch input").on("change", function(e) {
const isOn = e.currentTarget.checked;
console.log(isOn)
isChecked(isOn);
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/457360.html
標籤:javascript html jQuery css 切换
上一篇:如何在li中獲取ul
下一篇:邊欄影片在加載時一直播放
