|
почему 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 + хтмл(полная страница рабочая) Заранее спасибо |
neWjs,
ставьте атрибут onclick прямо на тег Дело в том что у Вас элементы идут с идентичным id и которые вы потом ремовите - или форму просто скрывайте display:none - нафига уничтожать и создавать ? |
сорри не уточнил что он делает он ищет по странице фразы введенные в инпут. он очищает от предыдущего поиска перед новым
|
Цитата:
форму ставите сразу на страницу с display:none при клике очистка value='' и display:block |
Цитата:
не совсем понял зачем? |
Цитата:
|
если вы имели ввиду так , то бесполезно уже пробывал
inp_bt.onclick = function(){//срабатывает один раз, на второй нечего не происходит
search_ = inp_s.value;
inp_s.value ='';//clear
if(search_ === prev_val || search_ == '')return;
alert('');
setTimeout(return_back,0);
setTimeout(cls,0);
prev_val = search_;
}
|
neWjs,
Неть Это что у Вас делает ? 101 el.insertAdjacentHTML("afterEnd",text); 102 el_parent.removeChild(el); |
сначала скрипт ищет переданную фразу на странице , потом оборачивает в <span name="'+i+'" class = "finded">'+fin+"</span>, перед новым поиском нужно убрать все span ,но перед тем как удалить спан нужно достать из него значение
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);//insertAdjacentHTML - вставляет значение элемента после него
el_parent.removeChild(el);// удаляет спан
}
}
|
neWjs,
поставьте обработчик прямо на тег <input onclick="Fun_1" type="button" id="find_s" value="поиск"> |
| Часовой пояс GMT +3, время: 10:31. |
|