$(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] === ' '
{timeout}
время, сколько максимум готовы прождать первого «ленивца».myDiv.length
— можно вывести в консоль, как вариант. console.log(myDiv.length); // undefined
myDiv.children
— стоит почитать документацию. Важный момент: это «живая» коллекция. Как только удаляете из неё элемент, коллекция обновляется. Удалили 1-й, все сдвинулись на 1, и 3-м станет тот, что ранее был 4-м.arr === undefined
'aBc-dEf-GH' => ['aBc', 'dEf', 'GH']
map()
пробежит по каждому элементу, возвращая новый. 'dEf' => 'Def'
'aBc' => 'abc'
function camelize(str) {
return str.split('-')
.map((word, i) => i ? word.substr(0, 1).toUpperCase() + word.substr(1).toLowerCase() : word.toLowerCase())
.join('');
}
hosts
любой домен, указывающий на адрес 127.0.0.1
, и работать с ним.Access-Control-Allow-Origin: *
const sample = 'submenu-';
const links = [...document.querySelectorAll('ul.navbar-main a')]
.filter((a) => a.id.startsWith(sample));
console.log(links); // массив со ссылками
links.forEach((a) => a.addEventListener('click', (e) => e.target.classList.add('top'));
a[id^=submenu]
выберет те элементы anchor, у которых id начинается с "submenu":[...document.querySelectorAll('ul.navbar-main a[id^=submenu]')]
.forEach((a) => a.addEventListener('click', (e) => e.target.classList.add('top'));
if(event.key = a8[event.key]){
— здесь вы просто присваиваете в event.key
значение из a8
. При вводе маленкой "o"
, возвращается ноль, и if ()
не срабатывает. В двух других случаях возвращается не-ноль, и срабатывает код внутри if ()
.{
let isYMLoaded = false;
const loadYM = () => {
if (isYMLoaded) return;
isYMLoaded = true;
setTimeout(() => {
// Metrika code
// ...
}, 0);
}
const eventNames = 'click,scroll,touchstart,mouseenter'.split(',');
const handlerYM = () => {
eventNames.forEach((name) => document.removeEventListener(name, handlerYM));
loadYM();
}
if (!!~navigator.userAgent.indexOf('YandexMetrika')) {
// Yandex
loadYM();
} else {
// нормальный посетитель
eventNames.forEach((name) => document.addEventListener(name, handlerYM));
}
}