ЭлементСвязьHTML.ЗаменитьДочерний

Методы · ReplaceChild

Заменяет дочерний узел, указанный параметром <СтарыйУзел>, на узел, указанный параметром <НовыйУзел>. Если новый узел - это ФрагментДокумента, то заменяемый узел будет заменен всеми дочерними узлами фрагмента документа. Если новый узел уже содержится в дереве документа, то он сначала удаляется из дочерних узлов старого родителя и вставляется в список дочерних узлов нового родителя.

Синтаксис

ЗаменитьДочерний(<НовыйУзел>, <СтарыйУзел>)
Полное описание, параметры и ограничения

ЭлементСвязьHTML.ЗаменитьДочерний (HTMLLinkElement.ReplaceChild)

ЭлементСвязьHTML (HTMLLinkElement)

ЗаменитьДочерний (ReplaceChild)

Доступен, начиная с версии 8.2.

Синтаксис:
ЗаменитьДочерний(<НовыйУзел>, <СтарыйУзел>)
Параметры:

<НовыйУзел> (обязательный)
Тип: АтрибутHTML, ЭлементHTML, ЭлементКнопкаHTML, ЭлементВводаHTML, ЭлементЗаголовокHTML, ЭлементРазметкаHTML, ЭлементПлавающийФреймHTML, ЭлементВставкаHTML, ЭлементФреймHTML, ЭлементНаборФреймовHTML, ЭлементМетаHTML, ЭлементОбъектHTML, ЭлементСкриптHTML, ЭлементТаблицаHTML, ЭлементСтрокаТаблицыHTML, ЭлементЯчейкаТаблицыHTML, ЭлементКолонкаТаблицыHTML, ЭлементЗаголовокТаблицыHTML, ЭлементБлокHTML, ЭлементЛинияHTML, ЭлементФорматированногоТекстаHTML, ЭлементКартинкаHTML, ЭлементСвязьHTML, ЭлементЯкорьHTML, ЭлементАплетHTML, ЭлементФормаHTML, ДокументHTML, ТекстHTML, КомментарийHTML.
Новый дочерний узел.

<СтарыйУзел> (обязательный)
Тип: АтрибутHTML, ЭлементHTML, ЭлементКнопкаHTML, ЭлементВводаHTML, ЭлементЗаголовокHTML, ЭлементРазметкаHTML, ЭлементПлавающийФреймHTML, ЭлементВставкаHTML, ЭлементФреймHTML, ЭлементНаборФреймовHTML, ЭлементМетаHTML, ЭлементОбъектHTML, ЭлементСкриптHTML, ЭлементТаблицаHTML, ЭлементСтрокаТаблицыHTML, ЭлементЯчейкаТаблицыHTML, ЭлементКолонкаТаблицыHTML, ЭлементЗаголовокТаблицыHTML, ЭлементБлокHTML, ЭлементЛинияHTML, ЭлементФорматированногоТекстаHTML, ЭлементКартинкаHTML, ЭлементСвязьHTML, ЭлементЯкорьHTML, ЭлементАплетHTML, ЭлементФормаHTML, ДокументHTML, ТекстHTML, КомментарийHTML.
Существующий дочерний узел.
Возвращаемое значение:
Значение прежнего узла.
Описание:

Заменяет дочерний узел, указанный параметром <СтарыйУзел>, на узел, указанный параметром <НовыйУзел>.
Если новый узел - это ФрагментДокумента, то заменяемый узел будет заменен всеми дочерними узлами фрагмента документа.
Если новый узел уже содержится в дереве документа, то он сначала удаляется из дочерних узлов старого родителя и вставляется в список дочерних узлов нового родителя.

Доступность:

Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Исключение вызывается в случаях:
если данный узел не допускает в качестве дочерних добавляемый узел или добавляемый узел является одним из предков данного;

если узел добавляется сам в себя;

если данный узел - Документ и добавляется второй узел ОпределениеТипаДокумента или Элемент;

если добавляемый узел был создан документом отличным от создавшего данный узел;

если данный узел в режиме только для чтения или если предыдущий родитель добавляемого узла в режиме Только для чтения;

если заменяемый узел не найден;

если добавляемый узел является дочерним узлом узла Документ и реализация не поддерживает удаления узлов ОпределениеТипаДокумента и Элемент у узла Документ.

Использование в версии:

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

link: связь не является текстовым контейнером

Учебная диагностика ограничения листового узла. Наличие методов в API не означает, что узел допускает дочерние элементы.

Где и как запускать

Синтаксический пример для серверного обработчика или толстого клиента. ЧтениеHTML и ПостроительDOM разбирают собственную строку в память; это не открытие страницы в браузере. Здесь код не выполнялся.

Подготовка

  1. Используется только собственная строка HTML. Лист и посторонний узел получаются из одного документа, новый узел — его собственная копия.

  2. Это намеренно отрицательный пример: дочерняя вставка в данный лист не является полезной успешной операцией.

Чтение = Новый ЧтениеHTML;
Чтение.УстановитьСтроку("<html><head><link id=""leaf""></head><body><span id=""other"">Тетрадь</span></body></html>");
Построитель = Новый ПостроительDOM;
Документ = Построитель.Прочитать(Чтение);
Чтение.Закрыть();
Лист = Документ.ПолучитьЭлементПоИдентификатору("leaf");
Посторонний = Документ.ПолучитьЭлементПоИдентификатору("other").ПервыйДочерний;
НовыйУзел = Посторонний.КлонироватьУзел(Истина);
Попытка
    Лист.ВставитьПеред(НовыйУзел);
Исключение
    Сообщить("ВставитьПеред: получен отказ");
КонецПопытки;
Попытка
    Лист.ДобавитьДочерний(НовыйУзел);
Исключение
    Сообщить("ДобавитьДочерний: получен отказ");
КонецПопытки;
Попытка
    Лист.ЗаменитьДочерний(НовыйУзел, Посторонний);
Исключение
    Сообщить("ЗаменитьДочерний: получен отказ");
КонецПопытки;
Попытка
    Лист.УдалитьДочерний(Посторонний);
Исключение
    Сообщить("УдалитьДочерний: получен отказ");
КонецПопытки;
Сообщить("Дочерних узлов: " + Строка(Лист.ДочерниеУзлы.Количество()));

Разбор по шагам

  1. Разберите строку и получите настоящий листовой узел.

  2. Отдельно проверьте четыре вызова на этом же получателе; перехват исключения нужен только для учебной диагностики.

  3. Посмотрите число дочерних узлов после вызовов, не объявляя отказ успешным редактированием.

Как проверить результат

  1. Для ВставитьПеред и ДобавитьДочерний ожидается отказ в недопустимой дочерней вставке; если поведение другое, не считайте ожидаемую диагностику подтверждённой.

  2. Посторонний не является дочерним этого листа: замена и удаление также должны отказать; исходный лист остаётся без дочерних узлов.

Ожидаемый результат

Приведён короткий пример синтаксиса и его ограничения. Здесь он не запускался в 1С; выполните проверки в своём учебном контексте.

На что обратить внимание

  1. Исключение означает отказ, а не успешное добавление. Эти вызовы не следует использовать для создания содержимого листового элемента.

  2. ВставитьПеред и ДобавитьДочерний также могут отказаться из-за другого документа, предка или режима только чтения. Здесь узлы принадлежат собственному документу.

  3. В рабочем алгоритме ошибку нужно обрабатывать по задаче, а не безусловно продолжать четыре операции.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.