我創建了一個切換輸入,工作人員可以設置它們是否在辦公室。我正在使用本地存儲來保存輸入的狀態。當我在頁面上添加多個切換輸入時,每個輸入的狀態都可以改變,但是當我重新加載頁面時,由於上次輸入設置的本地存儲(即全部輸出),所有輸入都是相同的。根據本地存儲改變元素樣式
如何保存每個切換狀態並使用本地存儲來記住這一點?
CSS代碼
<style type="text/css">
.toggle {
-webkit-appearance: none;
appearance: none;
width: 150px;
height: 60px;
display: inline-block;
position: relative;
border-radius: 50px;
overflow: hidden;
outline: none;
border: none;
cursor: pointer;
background-color: red;
transition: background-color ease 0.3s;
}
.toggle:before {
content: "in out";
display: block;
position: absolute;
z-index: 2;
width: 80px;
height: 70px;
top: -5px;
left: -10px;
background: #fff;
border-radius: 50%;
font: 30px/70px Helvetica;
text-transform: uppercase;
font-weight: bold;
text-indent: -40px;
word-spacing: 85px;
color: #fff;
text-shadow: -1px -1px rgba(0,0,0,0.15);
white-space: nowrap;
box-shadow: 0 1px 2px rgba(0,0,0,0.2);
transition: all cubic-bezier(0.3, 1.5, 0.7, 1) 0.3s;
}
.toggle:checked {
background-color: #4CD964;
}
.toggle:checked:before {
left: 75px;
}
.toggle.in {
background-color: #4CD964;
}
.toggle.in:before {
left: 75px;
}
</style>
HTML代碼
<input class="toggle" type="checkbox" />
<input class="toggle" type="checkbox" />
jQuery代碼
var toggle = $('.toggle');
toggle.on('click', function(){
if ($('input[type=checkbox]:checked').length === 0) {
localStorage.setItem('result', 'out');
$(this).removeClass('in');
} else {
localStorage.setItem('result', 'in');
$(this).addClass('in');
}
})
if (localStorage.result === 'in') {
toggle.addClass('in');
} else {
toggle.removeClass('in');
}
你總是overwriteing同一個地方在你的localStorage('result')。您需要單獨保存或作爲字符串化對象/數組。 – Zammy
爲獲得最佳效果,請爲每個輸入使用「ID」,併爲對象中的每個輸入傳遞localStorage值。 –