Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   оптимизация компонента "быстрый поиск" (https://javascript.ru/forum/events/3050-optimizaciya-komponenta-bystryjj-poisk.html)

!JAlex_ 13.03.2009 12:43

оптимизация компонента "быстрый поиск"
 
Тут давича соорудил компонент для быстрого поиска по массиву строки, вводящейся в Эдит (поиск обеспечивает любое вхождение искомой строки). Для этого соорудил: Эдит(id="textF" ), под ним Див (id="div2"), в который вывожу массив(объявил его глобально) отсортированных строк.
Принцип действия:
по введению буковки(ок) (количество букв, после которого начинается поиск можно изменять) в Эдит:
<input id="textF" value="ввести символы" autocomplete="off" onkeyup="noNumbers(event)">
производится проверка вхождения набранной строки в строки, которые имеются в массиве. В результате чего, в Див2 помещаются все строки, в которых есть строка из Эдита. По нажатию стрелки "вверх"/"вниз " пожно, подсветив фоном, переместиться на интересующую запись и выбрать ее мышей или по нажатию на Энтер. Тормоза начинаются в зависимости от кол-ва строк в массиве (чем больше строк, тем медленнее происходит реакция на нажатие стрелок). Вот один из обработчиков:
if (e.keyCode==38){   	//нажатие на стрелку "вверх"  	 
  	 if (child!=0){
  	 	if (index>=1) {
  	 		div2.childNodes[index-1].style.backgroundColor = '#ccc';
  	 		div2.childNodes[index].style.backgroundColor = '';
  	 		index-=1;
  	 	}  
  	 	else (index = -1)  	
  	 }
  	 return (false);
  }

div2.childNodes[index] - строка с номером index (моя переменная), которая отображается в текущий момент

обработчик onkeyup() взял так как он мне более подошел
Вопросы: 1. чем могут быть вызваны эти тормоза? и
2. можно ли сделать чтоб при удерживании стрелки вниз/вверх происходило быстрое перемещение подсветки строк в Диве?


Часовой пояс GMT +3, время: 01:25.