Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.11.2018, 10:57
Новичок на форуме
Отправить личное сообщение для fizz5360 Посмотреть профиль Найти все сообщения от fizz5360
 
Регистрация: 18.10.2018
Сообщений: 9

Помогите написать JS...
Всем привет, я уже обращался несколько недель назад. Мне тогда ответили, но я все равно ничего не понял. В общем есть JS код поиска по сайту.
<script>
	var input,search,pr,result,result_arr, locale_HTML, result_store;

function func() {
 	locale_HTML = document.body.innerHTML;   // сохраняем в переменную весь body (Первоначальный)
}
setTimeout(func, 1000);  //ждем подгрузки Jsona и выполняем

function FindOnPage(name, status) {

	input = document.getElementById(name).value; //получаем значение из поля в html
	
	if(input.length<3&&status==true)
	{
		alert('Для поиска вы должны ввести три или более символов');
		function FindOnPageBack() { document.body.innerHTML = locale_HTML; }
	}
	
	if(input.length>=3)
	{
		function FindOnPageGo() {

			search = '/'+input+'/g';  //делаем из строки регуярное выражение
			pr = document.body.innerHTML;   // сохраняем в переменную весь body
			result = pr.match(/>(.*?)</g);  //отсекаем все теги и получаем только текст
			result_arr = [];   //в этом массиве будем хранить результат работы (подсветку)

			var warning = true;
			for(var i=0;i<result.length;i++) {
				if(result[i].match(eval(search))!=null) {
					warning = false;
				}
			}
			if(warning == true) {
				alert('Не найдено ни одного совпадения');
			}

			for(var i=0; i<result.length;i++) {
				result_arr[i] = result[i].replace(eval(search), '<span style="background-color:red;">'+input+'</span>'); //находим нужные элементы, задаем стиль и сохраняем в новый массив
			}
			for(var i=0; i<result.length;i++) {
				pr=pr.replace(result[i],result_arr[i])  //заменяем в переменной с html текст на новый из новогом ассива
			}
			document.body.innerHTML = pr;  //заменяем html код
		}
	}
	function FindOnPageBack() { document.body.innerHTML = locale_HTML; }
	if(status) { FindOnPageBack(); FindOnPageGo(); } //чистим прошлое и Выделяем найденное
	if(!status) { FindOnPageBack(); } //Снимаем выделение
}

</script>


Нашел на просторах интернета, работает отлично, но можно ли сюда добавить кнопку переключения между найденными "элементами", так как я только начал учить JS, то почти ничего не понимаю. Всем заранее спасибо.

Вот форма поиска.
<form>
<input class="place_for_search" type="text" id="text-to-find" value="" placeholder="Search" autofocus>
<input class="button_for_turn_back" type="button" onclick="javascript: FindOnPage('text-to-find',false); return false;" value=" " title="Отменить поиск">
<input class="button_for_search" type="submit" value="search" onclick="javascript: FindOnPage('text-to-find',true); return false;" value=" " title="Начать поиск">
<input type="button" name="next">
</form>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать анимацию блока SpaTen Общие вопросы Javascript 0 17.11.2016 14:47
Помогите полностью расшифровать скрипт JS DFanJ Events/DOM/Window 0 31.07.2016 00:04
Помогите перенести регулярное выражение из php в js. veltony Общие вопросы Javascript 10 10.06.2016 14:57
Помогите написать JavaScript ! Alamogoro Общие вопросы Javascript 4 24.05.2012 19:11
помогите задать переменную в js bsgroupua Общие вопросы Javascript 3 01.02.2010 18:28