да вы правы , с проверкой я переборщил=)
убрал , но теперь вообще какой то бред функция не вызывается (хотя вызов есть) setTimeout(s_rch,0); (я переименовал ее на s_rch)
var next_, search_, inp_s, inp_bt, prev_val;
next_ = document.body.firstChild;
inp_s = document.getElementById("search");
inp_bt = document.getElementById("find_s");
function cl (){
search_ = inp_s.value;
alert(inp_s.value);
if(inp_s.value_ === prev_val || inp_s.value == '')return;
setTimeout(return_back,0);
setTimeout(s_rch,0);
prev_val = search_;
}
function s_rch(){
alert(next_);
function search_condition(next){
var n_type = next.nodeType;
var tag = next.tagName;
if(tag =='SCRIPT'|| tag == 'STYLE'
|| tag =="IMG" || tag == 'BR'
|| tag =="INPUT" ) return false;
return true;
}
var i = 0;
(function closers(){
if(search_condition(next_)){
var reg = new RegExp(search_,"ig");
next_.innerHTML = next_.innerHTML.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");
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);
}
}