Поясните код из JavaScript (про localStorage)

66
23 ноября 2021, 01:30

В общем нужно записать отмеченные чекбоксыы (для отображения после перезагрузки). В интернете нашел решение, но не могу понять код (в основном синтаксис). Вот сам код:

function save_checkbox(name) 
{ 
    localStorage[name] = document.getElementById(name).checked ? 1 : 0 
} 
function load_checkbox() 
{ 
    var table = document.getElementById('resources') 
    var input = table.getElementsByTagName('input') 
  
    for(var i = 0; i < input.length; i++) 
    { 
        var checkbox = input[i] 
        checkbox.checked = parseInt(localStorage[checkbox.id], 10) 
    } 
}

Можете объяснить на пальцах, как тут все работает? В частности, что значат фигурные скобки после localStorage, ведь это не массив и не коллекция?

Answer 1
function save_checkbox(name)
{
    // в localStorage создаётся/перезаписывается item с именем, 
    // которое передаётся в качестве аргумента функции, и в него 
    // записывается состояние чекбокса, т.е. 1 если он checked, 
    // 0 если нет.
    localStorage[name] = document.getElementById(name).checked ? 1 : 0
}
function load_checkbox()
{
    // table - переменная с эл-том у которого id = resources
    var table = document.getElementById('resources')
    // input - в переменную записываются все <input /> эл-ты страницы
    var input = table.getElementsByTagName('input')
    // цикл для перебора эл-тов с переменной input
    for(var i = 0; i < input.length; i++)
    {
        // в переменную checkbox записывается input текущей итерации цикла
        var checkbox = input[i]
        // ранее созданной переменной (в которой находится текущий чекбокс)
        // устанавливается значение атрибута checked, который берётся с
        // localStogare (localStorage[checkbox.id]) по id текущего 
        // эл-та (checkbox.id) используя десятичную систему счисления,
        // второй аргумент в parseInt - указание системы исчисления
        checkbox.checked = parseInt(localStorage[checkbox.id], 10)
    }
}
READ ALSO
Асинхронная очередь запросов на сервер с фиксированным интервалом на JavaScript

Асинхронная очередь запросов на сервер с фиксированным интервалом на JavaScript

Есть код синхронного запросаСинхронный используется потому, что нельзя отправлять параллельные запросы, сервер отвечает не чаще раза в секунду,...

76
Ошибка при создании слайдера через объект

Ошибка при создании слайдера через объект

При запуске кода изображения не изменяются - указывается ошибка

162
проблема в Django форме

проблема в Django форме

Учу Django, и осваиваю встроиные Django формыпроблема в том что у меня есть форма, которая должна либо создавать тег либо выводить ошибку(думаю...

209
Не показываются иконки svg в HTML

Не показываются иконки svg в HTML

Подскажите как корректно задавать размеры иконкам svg? В моем коде у меня есть 2 элемента svg: исходный и ссылающийсяЯ задал размеры и вьюбокс...

172