ЭлементФреймHTML.ПолучитьЭлементыПоИмени

Методы · GetElementByTagName

Выбирает все элементы с указанным именем.

Синтаксис

ПолучитьЭлементыПоИмени(<Имя>)
Полное описание, параметры и ограничения

ЭлементФреймHTML.ПолучитьЭлементыПоИмени (HTMLFrameElement.GetElementByTagName)

ЭлементФреймHTML (HTMLFrameElement)

ПолучитьЭлементыПоИмени (GetElementByTagName)

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

Синтаксис:
ПолучитьЭлементыПоИмени(<Имя>)
Параметры:

<Имя> (необязательный)
Тип: Строка.
Имя требующегося элемента (коллекции элементов).
Возвращаемое значение:
Тип: СписокЭлементовDOM.
Список узлов DOM (элементов), являющихся дочерними для данного узла, в порядке их следования в документе.
Описание:

Выбирает все элементы с указанным именем.

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

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

Примечание:
Может использоваться предопределенный шаблон '*', означающий необходимость выбора всех узлов Элемент дерева.
Использование в версии:

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

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

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

Поиск потомков не равен поиску самого элемента

Созданный пустой элемент не имеет потомков с собственным именем. СписокЭлементовDOM возвращается даже при отсутствии результата.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Используйте учебную базу платформы 8.5.1.1343 и серверную процедуру учебного общего модуля. Каждый пример выполняйте отдельно.

  2. Все данные заказа вымышлены и находятся в строке. ЧтениеHTML разбирает данные, но не является браузером: форма не отправляется, ссылки не открываются, картинки не скачиваются.

  3. Никакие файлы, адреса сайтов, токены и документы информационной базы не нужны. Не заменяйте учебную строку произвольным внешним HTML без отдельной проверки безопасности.

  4. Индексы коллекций начинаются с нуля. Перед обращением к найденному узлу проверяйте Неопределено; перед специальными свойствами элемента проверяйте его тип.

HTML = "<html><head><title>Учебный заказ</title><meta id='meta' name='description' content='Вымышленный заказ'></head>
|<body id='body'><p id='note'>Заказ существует только в памяти</p><pre id='code'>A-01: 3
|B-02: 1</pre>
|<form id='order' name='order' action='' method='get'>
|<input id='customer' name='customer' type='text' value='Учебный покупатель'>
|<input id='accepted' name='accepted' type='checkbox' value='yes'>
|<button id='preview' name='preview' type='button' value='preview'>Предпросмотр</button></form>
|<table id='items' summary='Книга и ручка'><caption id='caption'>Товары</caption><colgroup><col id='column'></colgroup><tbody>
|<tr id='book'><td id='book-name'>Книга</td><td>3</td></tr><tr id='pen'><td>Ручка</td><td>1</td></tr>
|</tbody></table><a id='help' name='help' href='#note'>Пояснение</a><img id='logo' alt='Учебная картинка без источника'>
|</body></html>";
Чтение = Новый ЧтениеHTML;
Чтение.УстановитьСтроку(HTML);
Попытка
    Построитель = Новый ПостроительDOM;
    Документ = Построитель.Прочитать(Чтение);
Исключение
    Чтение.Закрыть();
    ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Если ТипЗнч(Документ) <> Тип("ДокументHTML") Тогда
    ВызватьИсключение "Ожидался ДокументHTML, а не XML-документ";
КонецЕсли;
Ожидаемые = Новый Соответствие;
Ожидаемые.Вставить("guide-section", "ЭлементHTML");
Ожидаемые.Вставить("div", "ЭлементБлокHTML");
Ожидаемые.Вставить("pre", "ЭлементФорматированногоТекстаHTML");
Ожидаемые.Вставить("form", "ЭлементФормаHTML");
Ожидаемые.Вставить("input", "ЭлементВводаHTML");
Ожидаемые.Вставить("button", "ЭлементКнопкаHTML");
Ожидаемые.Вставить("table", "ЭлементТаблицаHTML");
Ожидаемые.Вставить("tr", "ЭлементСтрокаТаблицыHTML");
Ожидаемые.Вставить("td", "ЭлементЯчейкаТаблицыHTML");
Ожидаемые.Вставить("col", "ЭлементКолонкаТаблицыHTML");
Ожидаемые.Вставить("caption", "ЭлементЗаголовокТаблицыHTML");
Ожидаемые.Вставить("a", "ЭлементЯкорьHTML");
Ожидаемые.Вставить("img", "ЭлементКартинкаHTML");
Ожидаемые.Вставить("meta", "ЭлементМетаHTML");
Ожидаемые.Вставить("link", "ЭлементСвязьHTML");
Ожидаемые.Вставить("head", "ЭлементЗаголовокHTML");
Ожидаемые.Вставить("html", "ЭлементРазметкаHTML");
Ожидаемые.Вставить("hr", "ЭлементЛинияHTML");
Ожидаемые.Вставить("script", "ЭлементСкриптHTML");
Ожидаемые.Вставить("iframe", "ЭлементПлавающийФреймHTML");
Ожидаемые.Вставить("frame", "ЭлементФреймHTML");
Ожидаемые.Вставить("frameset", "ЭлементНаборФреймовHTML");
Ожидаемые.Вставить("embed", "ЭлементВставкаHTML");
Ожидаемые.Вставить("object", "ЭлементОбъектHTML");
Ожидаемые.Вставить("applet", "ЭлементАплетHTML");
Для Каждого Пара Из Ожидаемые Цикл
    Узел = Документ.СоздатьЭлемент(Пара.Ключ);
    Если ТипЗнч(Узел) <> Тип(Пара.Значение) Тогда
        ВызватьИсключение "Фактический тип фабрики отличается для " + Пара.Ключ;
    КонецЕсли;
    Потомки = Узел.ПолучитьЭлементыПоИмени(Пара.Ключ);
    Сообщить(ТипЗнч(Потомки) = Тип("СписокЭлементовDOM"));
    Сообщить(Потомки.Количество() = 0);
    Сообщить(Не Узел.ЕстьДочерниеУзлы());
КонецЦикла;

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

  1. Узел уже существует, но отсоединён и пуст: задаём его же тег в поиске.

  2. ПолучитьЭлементыПоИмени ищет потомков, поэтому не должен вернуть корень как собственный результат.

  3. Перед обращением к Элемент(0) всегда нужна проверка количества; здесь ноль и индекс не используем.

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

  1. Три сравнения для каждого элемента Истина: правильный тип списка, ноль совпадений и отсутствие детей.

  2. Само наличие переменной Узел не означает, что коллекция его потомков заполнена.

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

Разобран отрицательный результат поиска без ошибки индекса.

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

  1. Полученная коллекция не является КоллекцияЭлементовHTML: сверяйте конкретный возвращаемый тип.

  2. Поиск потомков отличается от Документ.ПолучитьЭлементПоИдентификатору.

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

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

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

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

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