Зачем replaceChild() возвращает old child или как это делают
Имеется интерфейс фильтра по любому одному полю формы такого в общем хтмля: в 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() возвращал бы результат замены, а не х знает что. Или как такое сделать нечерезжопенно? |
Часовой пояс GMT +3, время: 16:39. |