Показать сообщение отдельно
  #24 (permalink)  
Старый 07.07.2012, 23:59
Аспирант
Отправить личное сообщение для neWjs Посмотреть профиль Найти все сообщения от neWjs
 
Регистрация: 27.05.2012
Сообщений: 48

вот код убрал лишнее(комментарии)
var next_, search_,inp_s, inp_bt, prev_val, next_anc,prev_anc;
	
	 next_ = document.body.firstChild;
	 inp_s = document.getElementById("search");  
	 inp_bt = document.getElementById("find_s"); 
	 next_anc = document.getElementById('next_anc');
	 prev_anc = document.getElementById("prev_anc");



        function cl (){//вызывается кликом по кнопки с value= поиск
	            search_ = inp_s.value;		  
			alert(inp_s.value);
		   if(search_  === prev_val || search_  == '')return;
		     
			setTimeout(return_back,0);
		     setTimeout(cls,0);
			
			prev_val = search_;
			  } 


	    function cls(){//основная функция внутри которой рекурсия
		 var inner;
		 
		 function search_condition(next){//функция проверки элемента 
		    
			 var n_type = next.nodeType;	 
			   var tag = next.tagName;
			  
			  if(tag =='SCRIPT'|| tag == 'STYLE'
			  || tag =="IMG" || tag == 'BR'
			   || tag =="INPUT" || next == inp_s.parentNode
			   || next == inp_s ) return false;//проверка на теги в которых не нужно искать
			  
			  if(n_type === 1){//проверка на тэг
				  inner = "innerHTML";
				    if(next[inner] === '')return false;
				  }
				  
			  if(n_type === 3){// проверка на текстовый узел
				   inner = "data";
			
				   if(next[inner] == '\n')return false;
					   
					   
				  }	 
				
			 return true;// если элемент отвечает условию то в нем будет производится поиск
			 }
			
			 var i = 0;// номер якоря
		   
                     (function closers(){//замыкание
			  console.log(search_)
			if(search_condition(next_)){// проверка результата функции выше
			
                        var reg = new RegExp(search_,"ig");  
			next_[inner] = next_[inner].replace(reg, function(fin){// поиск и замена в данном элементе(если нашло подходящую фразу)
			i++;	
			return '<span name="'+i+'" class = "finded">'+fin+"</span>";
			});
			 }
		 
		 next_ = next_.nextSibling;// переход к следующему элементу
		 if(next_ !== null){// проверка последний элемент или нет
			 setTimeout(closers);
		} else {
			next_ = document.body.firstChild;// когда страница пройдена сбрасуем значения
		     i = 0;
		}
	
		  }());
		
		   
		 	};
	
	function return_back (){
		
		var finded_el = document.getElementsByClassName("finded");
		  console.log(finded_el);
		  var el, text,el_parent; 
		for(var i = finded_el.length;i--;){
			
			el = finded_el[i];
			
			 el_parent = el.parentNode;
			  text = el.innerHTML;
			
			el.insertAdjacentHTML("afterEnd",text);
			  el_parent.removeChild(el);
			}
		}
Ответить с цитированием