загрузка страницы
текущий цвет = есть что в LS ? что-то из LS : цвет-по-умолчанию
нажали на кнопку
поменяли цвет
сохранили в LS
загрузка страницы
переменная_Состояние = значение-по-умолчанию (true или false)
есть что в LS ? переменная_Состояние значение из LS
сделать цвет по Состоянию
нажатие кнопки
обновить переменную_Состояния
сохранить в LS
сделать цвет по Состоянию
(function () {
const storageKey = 'theme';
const state = {}
const stored = localStorage.getItem(storageKey);
state.theme = stored ? JSON.parse(stored) : false; // default
const el = document.querySelector('#pink');
const render = () => el.classList[state.theme ? 'add' : 'remove']('blueTheme');
render();
const toggleTheme = () => {
state.theme = ! state.theme;
localStorage.setItem(storageKey, JSON.stringify(state.theme));
render();
}
el.addEventListener('click', toggleTheme);
}())
super.method()
function
, пусть и после .bind()
$(document).ready(function() { ... });
jQuery
внутрь функции в виде аргумента $
. position: fixed;
, положение его менять программно по событию "scroll".document.addEventListener('scroll', () => {
let offset = window.scrollY;
const start = 685; // начало стоп-зоны в px
const stop = 1000; // конеч стоп-зоны
if (offset >= start && offset < stop) {
offset = start; // стоим на месте
} else if (offset >= stop) {
offset -= (stop - start); // продолжаем движение
}
content.style.top = `-${offset}px`; // позиционируем контент
});
function checkResult() {
const data = {
hash: hash,
}
$.ajax({
url: 'result.php',
dataType: "json",
data: data,
success: (result) => {
const ok = result.ok;
if (ok != 1) {
// перезвоните через секунду
setTimeout(checkResult, 1000);
}
},
error: (response) => { // Данные не отправлены
$('#result_form').html('Ошибка. Данные не отправлены.');
}
});
}
checkResult();
event.stopPropagation();
document.body.addEventListener('click', () => {
if (newdiw.classList.contains("active")) newdiw.classList.remove("active");
});
requestAnimationFrame()
– что передаётся в него аргументом – это понадобится для реалистичной плавности на всех устройствах от быстрого компа до слабого телефонаinnerHTML
заменит собой все, что было ранее. А createElement()
позволяет заранее навесить слушателей событий прямо на создаваемый элемент.