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

почему onclick срабатывает один раз
вот сам , код не могу понять почему onclick срабатывает только один раз.
ошибок в консоле нет..
(function(){
	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");
	/* 
	 next_anc.onclick = function(){fin.call(this,'next');}
	  prev_anc.onclick = function(){fin.call(this,'prev');}*/
	   
	   inp_bt.onclick = function(){//срабатывает один раз, на второй нечего не происходит
		   search_ = inp_s.value;
		   
		   if(search_ === prev_val || search_ == '')return;
		    alert('');
			setTimeout(return_back,0);
		     setTimeout(cls,0);
			
			prev_val = search_;
			
		   }
		/*   var j = 1;
		  function fin(param){
			//var fin = document.anchors;
			 // var len = fin.length;
			  alert();
			   if(param == 'next')j++;
			   else j--;
			  
			   this.href = '#'+j;
			 
			  } */
	   
	    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(next_.nodeName);
			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);
			}
		}
	    
	}());

тут код полностью http://learn.javascript.ru/play/g13rJ + хтмл(полная страница рабочая)
Заранее спасибо
Ответить с цитированием