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'а, и в сеттере искуственно создавать событие при изменении значения. Код и идея отсюда.$(window).scroll()
объявите выше. И вызовите ещё 1 раз явно, не по событию.$(function () {
function onScroll(event) {
var st = $(this).scrollTop();
if ($(window).scrollTop() > 50) {
$("header").addClass("active");
} else {
$("header").removeClass("active");
}
if (Math.abs(lastScrollTop - st) <= delta) return;
if (st > lastScrollTop && lastScrollTop > 0) {
$("header").css("top", "-146px");
} else {
$("header").css("top", "0px");
}
lastScrollTop = st;
}
var lastScrollTop = 0,
delta = 15;
$(window).scroll(onScroll);
onScroll();
});
innerHTML
. При этом теряются все слушатели событий: новая разметка, всё новое — надо заново вешать обработчики. Либо слушать события выше.// это условие, при котором букву надо делать большой
const world = str[i] !== ' ' && (i === 0 || str[i - 1] === ' ');
// здесь добавляется либо заглавная, либо просто-как-есть буква,
// в зависимости от условия выше
result += world ? toUpperCase(str[i]) : str[i];
str[i] !== ' '
i === 0
ИЛИ предыдущий символ пробел str[i - 1] === ' '