Аккумулятором ведь выступает 1 объект в этом массиве.
{}
[ {id: 'a'}, {id: 'b'}, {id: 'c'} ]
{
a: {id: 'a'},
b: {id: 'b'},
c: {id: 'c'}
}
const blocks = [
'fundament',
'stena',
'krovlia',
'vnesh_otdel',
'vnut_otdel',
'commun',
'about_uslugy',
];
const lsKey = 'block';
// вызывать showDiv('fundament')
const showDiv = (id) => {
if (!blocks.includes(id)) return;
// запомнить выбор в localStorage
localStorage.setItem(lsKey, id);
render();
}
// отрисовывает блок из LS
const render = () => {
const id = localStorage.getItem(lsKey) || blocks[0]; // по умолчанию первый
blocks.forEach((b) => document.getElementById(b + '__block')
.style.visibility = b === id ? 'visible' : 'hidden'
);
}
render(); // при загрузке страницы отобразить какой-то один
Вопрос: почему ... перезаписывает его
setItem()
перезаписывает значение по ключу. Ключ у вас один и тот же всегда: "src".const links = new Set(); // TODO: надо считать из LS ранее сохранённый
const key = 'photos'; // ключ в Storage
const addLink = (e) => {
const size = links.size; // размер до добавления
links.add(e.target.src); // добавили ссылку
if (size === links.size) return; // уже была эта ссылка в наборе
localStorage.setItem(key, JSON.stringify([...links]));
alert('Фото добавлено в избранное!');
}
photo.forEach((el) => el.addEventListener('click', addLink));
Number.isInteger(42) // true
Number.isInteger(4.2) // false
const knowledge = [
{id: "0", title: "Как начать пользоваться сервисом", description: "", prev: null, next: ["0.0", "0.1" ]},
{id: "0.0", title: "Упрощенная инструкция", description: "для новых пользователей", prev: "0", next: []}
{id: "0.1", title: "Продвинутая", description: "для клиентов, чьи познания больше", prev: "0", next: []},
{id: "1", title: "Пользуется ПК", description: "", prev: null, next: ["1.1", ]},
{id: "2", title: "Браузер Google Chrome", description: "", prev: null, next: ["2.1", ]},
{id: "3", title: "Версия последняя", description: "", prev: null, next: ["3.1", ]},
];
(now - start) / (end - start) = x / total
, откуда x = total * (now - start) / (end - start)
requestAnimationFrame()
вызывать функцию, которая отрисует очередной кадр: текущие значения счётчиков./chat.php
– возвращать заглушку, или, лучше, редирект на главную.chat.php
проверять его наличие.chat.php
["January","February"]
{"aaa":["January","February"],"bbb":["Jan","Feb"]}
fetch('/data/dictionary.json') // URL json-файла
.then((r) => r.json())
.then((dict) => {
console.log(dict.aaa[1]); // "February"
})
.catch((err) => console.error(err))
;
%
на длину массива.words[current++ % words.length]
current++
счетчик увеличивается на 1, но «в работу» поступает его значение ДО увеличенияcurrent % words.length
даёт остаток от деления на длину массива. Если в массиве 3 элемента, остаток будет 0, 1 или 2. Как раз индексы слов в массиве.value
у нужного input'а, и в сеттере искуственно создавать событие при изменении значения. Код и идея отсюда.