Имеется интерфейс фильтра по любому одному полю формы такого в общем хтмля: в div - родителе - список, поле ввода, кнопка. Поле ввода копируется из формы, то есть клонируется. Оно уже все готовое - со всем барахлом, например это может быть еще список, или дата, или там цвет и тп. Все работает, но вопрос в черезжопенном методе replaceChild(); Зачленом он возвращает старую ноду? Сейчас так (кусок)
var filter_list=document.getElementById("_filter"),
parent=document.querySelector(".filter"),
filter_value=document.getElementById("_filter_value"),
old_child=filter_value;
filter_list.addEventListener("change",function(e){
var field=document.getElementsByName(this.value)[0];
if(!field || field.type=="file") {
parent.replaceChild(filter_value,old_child);
old_child=filter_value;
return;
}
var new_child=field.cloneNode(true);
new_child.removeAttribute("name");
new_child.removeAttribute("onchange");
parent.replaceChild(new_child,old_child);
old_child=new_child;
});
А могло быть так:
var filter_list=document.getElementById("_filter"),
parent=document.querySelector(".filter"),
filter_value=document.getElementById("_filter_value"),
child=filter_value;
filter_list.addEventListener("change",function(e){
var field=document.getElementsByName(this.value)[0];
if(!field || field.type=="file")
return child=parent.replaceChild(filter_value,child);
child=parent.replaceChild(field.cloneNode(true),child);
child.removeAttribute("name");
child.removeAttribute("onchange");
});
если бы бабушка была дедушкой, то есть replaceChild() возвращал бы результат замены, а не х знает что.
Или как такое сделать нечерезжопенно?