вот код убрал лишнее(комментарии)
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);
}
}