Есть такой сильно упрощенный код
var array = [1,2,3,4,5,6,7,8,9,10];
var num = 0;
var html = "";
array.forEach(function(item){
html += '<div class="card" id="index-' + item + '">' + item + '</div>'
})
document.querySelector(".wrap").innerHTML = html;
document.addEventListener('keydown', function(event) {
if (event.key == "ArrowRight" && num < array.length - 1) {
num++;
} else if(event.key == "ArrowLeft" && num > 0 ){
num--;
}
document.querySelectorAll(".card").forEach(function(item){
item.classList.remove('active');
});
document.querySelector("#index-" + array[num]).classList.add('active');
});
https://jsfiddle.net/xw9znqo5/
На его основе отрендерены элементы, Количество колонок и рядов может быть произвольным. Мне нужно сделать что то типа курсора, нужно добавить активный css класс текущей ячейке (текущему элементу массива). Клавишами лево / право я двигаюсь по масиву в начало и конец массива соответственно. И добавляю класс .active текущей ячейке. Тут все понятно.
Непонятно становится с клавишами вверх / вниз. Если нужно перейти с верхнего ряда на нижний
С помощью этого кода получаем количество элементов в одной строке
let inlineCount = 0;
const updateInlineCount = () => {
let cards = document.querySelectorAll('.card');
let currs = 0;
for (let i = 0; i < cards.length; i++) {
let e = cards[i].getBoundingClientRect().left;
if (currs === 0 || e > currs) {
currs = e;
} else {
inlineCount = i;
return;
}
}
}
// Обновляем первоначальное значение
updateInlineCount();
// Обновляем значение при изменение размера блока
window.addEventListener('resize', updateInlineCount);
После чего добавляем события Up/Down
if(event.key == "ArrowUp" && num > inlineCount - 1){
num -= inlineCount;
} else if(event.key == "ArrowDown" && num < array.length - inlineCount){
num += inlineCount;
}
Код полностью: https://jsfiddle.net/u3bd7yrc/
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Понимаю как нелепо может выглядеть этот вопрос,и как криво я описал проблему,но я новичок в этом деле,так что сорре
Эта функция вызывается по нажатию на кнопку:
В расширении Google Chrome, установлено событие, которое отслеживает загрузку определенной страницы сайта exemplecom:
Какую функцию выполняет func(), то есть в чем смысл использования этой функции там