ЭлементТаблицаHTML.ПолучитьЭлементыПоИмени

Методы · GetElementByTagName

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

Синтаксис

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

ЭлементТаблицаHTML.ПолучитьЭлементыПоИмени (HTMLTableElement.GetElementByTagName)

ЭлементТаблицаHTML (HTMLTableElement)

ПолучитьЭлементыПоИмени (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. Поиск потомков отличается от Документ.ПолучитьЭлементПоИдентификатору.

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

Создать и убрать заглавие, шапку и подвал таблицы

Caption, thead и tfoot решают разные задачи. Создаём их в копии своей таблицы и контролируем количество соответствующих тегов.

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

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

Подготовка

  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-документ";
КонецЕсли;
Таблица = Документ.ПолучитьЭлементПоИдентификатору("items");
Если Таблица = Неопределено Тогда
    ВызватьИсключение "Не найден учебный элемент items";
КонецЕсли;
Если ТипЗнч(Таблица) <> Тип("ЭлементТаблицаHTML") Тогда
    ВызватьИсключение "Неожиданный тип учебного элемента items";
КонецЕсли;
Копия = Таблица.КлонироватьУзел(Истина);
Копия.УдалитьЗаголовок();
Заглавие = Копия.СоздатьЗаголовок();
Заглавие.ДобавитьДочерний(Документ.СоздатьТекстовыйУзел("Учебный заказ, 4 единицы"));
Если ТипЗнч(Заглавие) = Тип("ЭлементЗаголовокТаблицыHTML") Тогда
    Заглавие.Выравнивание = "top";
КонецЕсли;
Шапка = Копия.СоздатьЗаголовокТаблицы();
Подвал = Копия.СоздатьПодвалТаблицы();
Сообщить(Заглавие.ТекстовоеСодержимое = "Учебный заказ, 4 единицы");
Сообщить(Шапка.РодительскийУзел = Копия);
Сообщить(Подвал.РодительскийУзел = Копия);
Сообщить(Копия.ПолучитьТелаТаблицы().Количество() = 1);
Копия.УдалитьЗаголовокТаблицы();
Копия.УдалитьПодвалТаблицы();
Копия.УдалитьЗаголовок();
Сообщить(Копия.ПолучитьЭлементыПоИмени("caption").Количество() = 0);
Сообщить(Копия.ПолучитьЭлементыПоИмени("thead").Количество() = 0);
Сообщить(Копия.ПолучитьЭлементыПоИмени("tfoot").Количество() = 0);
Сообщить(Таблица.ПолучитьЭлементыПоИмени("caption").Количество() = 1);

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

  1. Удаляем только прежний caption копии и создаём новое пояснение текстовым узлом.

  2. СоздатьЗаголовокТаблицы создаёт thead, а СоздатьПодвалТаблицы — tfoot; это не caption.

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

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

  1. Все восемь сравнений Истина; в оригинале остаётся его исходный caption.

  2. Пустые thead и tfoot показаны для жизненного цикла API, не как заполненная печатная форма.

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

Уяснены три разных элемента таблицы и парные операции создания/удаления.

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

  1. Создаваемые методы возвращают ЭлементHTML по справке; специальное Выравнивание используем только после проверки типа.

  2. Удаление заглавия копии не должно удалять caption оригинала.

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

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

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

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

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