@newaitix

Какие элементы выпадающего списка видит пользователь?

у меня есть список который представлен в виде div элемента в середине которого ссылки.
Я делаю события для кнопок 38 и 40 то есть вверх и вниз.
список длинный и имеет overflow: auto, то есть прокручивается.
Пользователь набрал в поле поиска слово и нажал кнопку 40 > выбрался элемент номер 0
Пользователь нажал кнопку 40 > выбрался элемент номер 1
Всего пользователь видит 11 элементов списка. Чтоб добраться до остальных нужно прокрутить список вниз или вверх.
Я хочу эмитировать прокрутку списка. Но не могу понять как мне отследить какие элементы сей час должен видеть пользователь.
if(ev.keyCode==38){
			selectP=select;
			(select<1)?0:select--;
			document.querySelectorAll('#sity_NP a')[select].style.background='rgba(55,92,155,0.8)';
			document.querySelectorAll('#sity_NP a')[select].style.color='rgb(255,255,255)';
			if(selectP>0){
				document.querySelectorAll('#sity_NP a')[selectP].style.background='rgb(255,255,255)';
				document.querySelectorAll('#sity_NP a')[selectP].style.color='rgb(31,61,106)';
			}
			document.getElementById('city_form').selectionStart=document.getElementById('city_form').value.length;
			ev.preventDefault();
			return false;
		}
		if(ev.keyCode==40){
			selectP=select;
			(arr.length-1>select)?select++:arr.length-1;
			if(select>10)console.log(Number.parseInt(select/10), (select%10)*.1);
			document.querySelectorAll('#sity_NP a')[select].style.background='rgba(55,92,155,0.8)';
			document.querySelectorAll('#sity_NP a')[select].style.color='rgb(255,255,255)';
			if(selectP<arr.length-1&&selectP>-1){
				document.querySelectorAll('#sity_NP a')[selectP].style.background='rgb(255,255,255)';
				document.querySelectorAll('#sity_NP a')[selectP].style.color='rgb(31,61,106)';
			}
			document.getElementById('city_form').selectionStart=document.getElementById('city_form').value.length;
			ev.preventDefault();
			return false;
		}

select - выбранный элемент
selectP - предыдущий выбранный элемент
arr - это все элементы
Подскажите как мне понимать какие элементы сейчас должен видеть пользователь ?
В пример приведу выбор города
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Merzley
Вся суть на самом деле сводится к вычислению координат текущего выделенного элемента списка и сравнению этого значения со значениями прокрутки контейнера.
Накидал что-то похожее и постарался в комментариях объяснить что там происходит. https://jsfiddle.net/05dmtxz6/1/ Надеюсь, поможет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы