Я добавил использование LocalStorage для сохранения позиций переключателей
значения находятся внутри switchList объект:
const switchList =
{ switch_1: true
, switch_2: true
, switch_3: true
, switch_4: true
, switch_5: true
, switch_6: true
}
непосредственно из списка входных флажков
Вам также нужна форма!
, поэтому, когда элемент формы получает какое-либо изменение ввода, с помощью делегирования события вы можете установить значение флажка внутри switchList
, а затем SwitchList копируется в локальное хранилище
const switchersF = document.querySelector('form#switchers')
, memoSwitch = 'SwitchStorage'
, switchList = [...switchers.querySelectorAll('input[type=checkbox]')].reduce((s,el)=>{ s[el.name]=true;return s},{})
;
initSwitchs()
;
switchersF.onsubmit=e=>e.preventDefault() // disable submit form
;
switchersF.oninput=e=>
{
if (!e.target.matches('input[type=checkbox]')) return
switchList[e.target.name] = e.target.checked
setSwitchsMemo()
// console.log( switchList )
}
function initSwitchs()
{
let SwitchsMemo = localStorage.getItem(memoSwitch)
if (!SwitchsMemo)
{ setSwitchsMemo() }
else
{
for (let [key, value] of Object.entries( JSON.parse(SwitchsMemo) ))
{
switchersF[key].checked = value
}
}
}
function setSwitchsMemo()
{
localStorage.setItem(memoSwitch, JSON.stringify(switchList) )
}
#switchers label {
position: relative;
display: block;
float: left;
clear: both;
width: 60px;
height: 34px;
margin: .5em 1em;
}
#switchers input {
display: none;
}
#switchers span {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
-webkit-transition: .4s;
transition: .4s;
}
#switchers span:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: .4s;
transition: .4s;
}
#switchers input:checked+span {
background-color: #2196F3;
}
#switchers input:checked+span:before {
transform: translateX(26px);
}
#switchers input:focus+span {
box-shadow: 0 0 1px #2196F3;
}
<h2>Toggle Switch</h2>
<form id="switchers">
<label> <input type="checkbox" checked name="switch_1"> <span></span> </label>
<label> <input type="checkbox" checked name="switch_2"> <span></span> </label>
<label> <input type="checkbox" checked name="switch_3"> <span></span> </label>
<label> <input type="checkbox" checked name="switch_4"> <span></span> </label>
<label> <input type="checkbox" checked name="switch_5"> <span></span> </label>
<label> <input type="checkbox" checked name="switch_6"> <span></span> </label>
</form>