Link Search Menu Expand Document

ЭлементHtml

Стд::ДокументHtml::ЭлементHtml
Базовые типы: Объект, УзелHtml
Доступность: Сервер

Иерархия типа

graph TD;
ЭлементHtml["ЭлементHtml"]-->УзелHtml["УзелHtml"];
УзелHtml["УзелHtml"]-->Объект["Объект"];

Объект для основных элементов html, содержащий имя тэга, атрибуты и дочерние узлы (включая например текстовые узлы). Дочерние узлы могут содержать либо элементы, либо терминальные узлы.

Сравнение ссылочное


Конструкторы

ЭлементHtml

ЭлементHtml(Тег: Строка)
Доступность: Сервер

Создает элемент html с тегом, не привязан к родительским элементам, то есть родитель и документ владелец будет равен Неопределено.

Примеры

пер ЯчейкаЗаголовка = новый ЭлементHtml("th")
пер Текст = новый ТекстовыйУзелHtml("Заголовок", Ложь)
ЯчейкаЗаголовка.ДобавитьКопииВКонецДочерних(Текст)

Свойства

Атрибуты

ТолькоЧтение Атрибуты: АтрибутыHtml
Доступность: Сервер

Атрибуты элемента.

Примеры

// Дано Элемент.ВнешнийКод() <div id="app-switcher" class="aui-dropdown2 aui-style-default" role="menu"></div>
пер Результат = ""
для Атрибут из Элемент.Атрибуты
    Результат += Атрибут.Имя + " : " + Атрибут.Значение + "\н"
;
// Результат будет равен
// id : app-switcher
// class : aui-dropdown2 aui-style-default 
// role : menu

АтрибутыData

ТолькоЧтение АтрибутыData: ЧитаемоеСоответствие<Строка, Строка>
Доступность: Сервер

Data атрибуты (для html 5).

Примеры

// Для элемента с кодом: <div data-package="myPackage" data-language="xbsl" class="group">
// Элемент.АтрибутыData будут равны {"package": "myPackage", "language": "xbsl"}

ВесьТекст

ТолькоЧтение ВесьТекст: Строка
Доступность: Сервер

Ненормализованный текст, который скомбинирован с собственным текстом элемента и текстом его дочерних.

Примеры

пер Документ = Парсер.Разобрать(
    "<p style=\"margin: 0 0 16px;\">Мы пришлем Вам доступ в течении дня. Ожидайте.</p>\n" +
    "<p style=\"margin: 0 0 16px;\">Если вдруг по каким-то причинам вы не получили ключ...</p>")
    .Результат
// Тогда Документ.Тело.ВесьТекст:
// "Мы пришлем Вам доступ в течении дня. Ожидайте.
//  Если вдруг по каким-то причинам вы не получили ключ..."

Ид

Ид: Строка?
Доступность: Сервер

Значение атрибута id, или Неопределено, если не установлено.


Имя

ТолькоЧтение Имя: Строка
Доступность: Сервер

Нормализованное имя тега элемента (всегда в lowercase, вне зависимости от исходного кода).

Примеры

если Элемент.Имя == "span"
    // заменяем узел на div
;

Классы

Доступность: Сервер

Классы данного элемента (значения для атрибута class)

Примеры

// Дано Элемент.ВнешнийКод() <div id="app-switcher" class="aui-dropdown2 aui-style-default" role="menu"></div>
Элемент.Классы // будет содержать "aui-dropdown2", "aui-style-default"
Элемент.ДобавитьКласс("colorized")
Элемент.Классы // будет содержать "aui-dropdown2", "aui-style-default", "colorized"

НормализованныйТекст

ТолькоЧтение НормализованныйТекст: Строка
Доступность: Сервер

Нормализованный текст, который скомбинирован с собственным текстом элемента и текстом его дочерних.

Примеры

пер Документ = Парсер.Разобрать(
    "<p style=\"margin: 0 0 16px;\">Мы пришлем Вам доступ в течении дня. Ожидайте.</p>\n" +
    "<p style=\"margin: 0 0 16px;\">Если вдруг по каким-то причинам вы не получили ключ...</p>")
    .Результат
// Тогда Документ.Тело.НормализованныйТекст:
// "Мы пришлем Вам доступ в течении дня. Ожидайте. Если вдруг по каким-то причинам вы не получили ключ..."

ПредыдущийСоседнийЭлемент

ТолькоЧтение ПредыдущийСоседнийЭлемент: ЭлементHtml?
Доступность: Сервер

Предыдущий прямой соседний элемент, Неопределено, если такого нет или родителя у текущего элемента не существует

Примеры

/* Пример части кода:
<label for="1">Russian</label>
<input type="radio" id="1" name="fav_language" value="Russian">
*/
// Для пользовательского ввода данных радио кнопок задать class = Radio, а их лейблам class = Label

пер РадиоКнопки = Документ.ПолучитьИзПоддереваЭлементыПоАтрибуту("input", "type", "radio")
РадиоКнопки.ДобавитьКласс("Radio")

для Кнопка из РадиоКнопки
    пер Лейбл = РадиоКнопки.ПредыдущийСоседнийЭлемент
    если Лейбл != Неопределено
        Лейбл.Атрибуты.Вставить("class", "Label")
    ;
;

/* Пример части результата:
<label for="1" class="Label">Russian</label>
<input type="radio" id="1" name="fav_language" value="Russian" class="Radio">
*/

СледующийСоседнийЭлемент

ТолькоЧтение СледующийСоседнийЭлемент: ЭлементHtml?
Доступность: Сервер

Следующий прямой соседний элемент, Неопределено, если такого нет или родителя у текущего элемента не существует

Примеры

/* Пример части кода:
<label for="1">Russian</label>
<input type="radio" id="1" name="fav_language" value="Russian">
*/
// Для пользовательского ввода данных радио кнопок задать class = Radio, а их лейблам class = Label

пер Лейблы = Документ.ПолучитьИзПоддереваЭлементыПоАтрибуту("label", "for", "")
Лейблы.УстановитьАтрибут("class", "Label")

для Кнопка из Лейблы
    пер РадиоКнопка = Лейблы.СледующийСоседнийЭлемент
    если РадиоКнопка != Неопределено
        РадиоКнопка.ДобавитьКласс("Radio")
    ;
;

/* Пример части результата:
<label for="1" class="Label">Russian</label>
<input type="radio" id="1" name="fav_language" value="Russian" class="Radio">
*/

СобственныйНормализованныйТекст

ТолькоЧтение СобственныйНормализованныйТекст: Строка
Доступность: Сервер

Нормализованный текст именно этого элемента без учета поддерева дочерних.

Примеры

пер Документ = Парсер.Разобрать(
    "<p style=\"margin: 0 0 16px;\">Мы пришлем Вам доступ в течении дня. Ожидайте.</p>\n" +
    "<p style=\"margin: 0 0 16px;\">Если вдруг по каким-то причинам вы не получили ключ...</p>")
    .Результат
// Тогда Документ.Тело.СобственныйНормализованныйТекст = ""
// Но Документ.Тело.ПолучитьДочерниеЭлементы()[0].СобственныйНормализованныйТекст = 
//    "Мы пришлем Вам доступ в течении дня. Ожидайте."

СобственныйТекст

ТолькоЧтение СобственныйТекст: Строка
Доступность: Сервер

Текст именно этого элемента без учета поддерева дочерних.

Примеры

пер Документ = Парсер.Разобрать(
    "<p style=\"margin: 0 0 16px;\">Мы пришлем Вам доступ в течении дня. Ожидайте.</p>\n" +
    "<p style=\"margin: 0 0 16px;\">Если вдруг по каким-то причинам вы не получили ключ...</p>")
    .Результат
// Тогда Документ.Тело.СобственныйТекст = "\n"
// Но Документ.Тело.ПолучитьДочерниеЭлементы()[0].СобственныйТекст = 
//    "Мы пришлем Вам доступ в течении дня. Ожидайте."

СтандартныйТег

ТолькоЧтение СтандартныйТег: Булево
Доступность: Сервер

Признак того, что тег содержится в стандарте html.


Методы

ВСтроку

ВСтроку(): Строка
Доступность: Сервер
Переопределение: ВСтроку

Возвращает “Имя: Диапазон”


ВнутреннийКод

ВнутреннийКод(НастройкиЗаписи: НастройкиЗаписиHtml? = Неопределено): Строка
Доступность: Сервер

Возвращает внутренний html код.

Примеры

/*
Для кода:
<html>
    <div id="first">
        <div id="second">
            <p>Some text</p>
        </div>
    </div>
</html>
*/

пер ВложенныйDiv = Документ.ПолучитьИзПоддереваЭлементыПоАтрибуту("div", "id", "second")[0]
пер Настройки = новый НастройкиЗаписиHtml()
Настройки.РазмерОтступов = 1
Настройки.УлучшениеВывода = Истина
пер Код = ВложенныйDiv.Родитель.ВнутреннийКод(Настройки)
/*
Код будет равен:
<div id="second">
 <p>Some text</p>
</div>
*/ 

ДобавитьКласс

ДобавитьКласс(Класс: Строка)
Доступность: Сервер

Добавляет атрибут класса, если его не было на элементе, со значением, иначе добавляет в атрибут class еще одно значение (через пробел). Если такое значение класса уже есть на элементе, то метод не выполняет никаких действий.

Примеры

// Дано Элемент.ВнешнийКод() <div id="app-switcher" class="aui-dropdown2 aui-style-default" role="menu"></div>
Элемент.Классы // будет содержать "aui-dropdown2", "aui-style-default"
Элемент.ДобавитьКласс("colorized")
Элемент.Классы // будет содержать "aui-dropdown2", "aui-style-default", "colorized"

ДобавитьКопииВКонецДочерних

ДобавитьКопииВКонецДочерних(Узлы: УзелHtml|Обходимое<УзелHtml>)
Доступность: Сервер

Добавляет копии переданных узлов в конец дочерних.

Примеры

метод СверстатьТаблицу(КолСтрок: Число, КолСтолбцов: Число): ЭлементHtml
    пер Таблица = новый ЭлементHtml("table")
    пер ЗаголовокТаблицы = новый ЭлементHtml("tr")
    для Инд = 0 по КолСтолбцов
        пер ЯчейкаЗаголовка = новый ЭлементHtml("th")
        пер Текст = новый ТекстовыйУзелHtml("Заголовок " + Инд, Ложь)
        ЯчейкаЗаголовка.ДобавитьКопииВКонецДочерних(Текст)
        ЗаголовокТаблицы.ДобавитьКопииВКонецДочерних(ЯчейкаЗаголовка)
    ;

    Таблица.ДобавитьКопииВКонецДочерних(ЗаголовокТаблицы)

    для СтрокаИнд = 0 по КолСтрок
        пер СтрокаТаблицы = новый ЭлементHtml("tr")
        для Инд = 0 по КолСтолбцов
            пер Ячейка = новый ЭлементHtml("td")
            пер Текст = новый ТекстовыйУзелHtml("Ячейка " + СтрокаИнд + ":" + Инд, Ложь)
            Ячейка.ДобавитьКопииВКонецДочерних(Текст)
            СтрокаТаблицы.ДобавитьКопииВКонецДочерних(Ячейка)
        ;
        Таблица.ДобавитьКопииВКонецДочерних(СтрокаТаблицы)
    ;
    возврат Таблица
;


ДобавитьКопииВНачалоДочерних

ДобавитьКопииВНачалоДочерних(Узлы: УзелHtml|Обходимое<УзелHtml>)
Доступность: Сервер

Добавляет копии переданных узлов в начало дочерних.

Примеры

// Положим в контейнер параграфы, у которых идентификаторы будут возрастать от 1 до 3 

пер Родитель = новый ЭлементHtml("div")
пер Последний = новый ЭлементHtml("p")
Родитель.ДобавитьКопииВНачалоДочерних(Последний)

Последний = Родитель.ПолучитьДочерниеЭлементы()[0]
Последний.Ид = "3"

пер ПараграфыДо = новый ЭлементыHtml([новый ЭлементHtml("p"), новый ЭлементHtml("p")])
ПараграфыДо[0] = "1"
ПараграфыДо[1] = "2"

Родитель.ДобавитьКопииВНачалоДочерних(ПараграфыДо)

/*
Получили код:
<div>
  <p id="1"></p>
  <p id="2"></p>
  <p id="3"></p>
</div>
*/

ПолучитьДочерниеЭлементы

ПолучитьДочерниеЭлементы(
  Поддерево: Булево = Ложь,
  Фильтр: ((ЭлементHtml)->Булево)? = Неопределено
): ЭлементыHtml
Доступность: Сервер

Примеры

/*
Для кода:
<html><body>
    <!-- Первый контейнер -->
    <div id="first">
        <!-- Второй контейнер -->
        <div id="second">
            <p>Some text</p>
        </div>
    </div>
</body></html>
*/
Документ.Тело.ПолучитьДочерниеЭлементы(Истина) // Вернет все элементы в этом html
Документ.Тело.ПолучитьДочерниеЭлементы() // Вернет коллекцию из одного элемент - <html>

// Вернет коллекцию из двух div
Документ.Тело.ПолучитьДочерниеЭлементы(Истина, Элемент -> Элемент.Ид != Неопределено) 

Получить дочерние узлы, которые являются элементами. Если Поддево == Ложь, то возвращает непосредственных детей для элемента, если Поддерево == Истина, возвращает поддерево для элемента. Если критерий задан, то в элементы добавляются дочерние удовлетворяющие этому критерию.


ПолучитьИзПоддереваЭлементыПоАтрибуту

ПолучитьИзПоддереваЭлементыПоАтрибуту(
  Тег: Строка,
  ИмяАтрибута: Строка,
  ЗначениеАтрибута: Образец|Строка|? = Неопределено
): ЭлементыHtml
Доступность: Сервер

Получить дочерние элементы из поддерева, которые имеют данный тег, а также установлен указанный атрибут и значение (если указано). При передаче строки будет искаться точное совпадение, при передаче образца- удовлетворение значения указанному образцу. Если идет поиск по атрибуту класса, то в результат попадут элементы, в которых этот класс содержится (то есть не обязательно класс должен быть один для элемента). Если в качестве значения класса передается строка, содержащая пробел, то по нему будут разделены классы и так же элементы будут проверены на принадлежность нескольким классам одновременно, например при поиске “К1 К2” будут возвращены элементы, у которых установлены оба класса (вне зависимости от порядка их объявления в элементе). В иных случаях передача пробела не будет влиять на разделение значений.

Примеры

метод ПолучитьВсеИзображенияИзВложенияПисьма(Документ: ДокументHtml): ЭлементыHtml
    // Изображения в письме для отображения из вложений в атрибуте src начинаются с "cid:"
    возврат Документ.Тело.ПолучитьИзПоддереваЭлементыПоАтрибуту("img", "src", 'cid:.*')
;

ПолучитьИзПоддереваЭлементыПоТегу

ПолучитьИзПоддереваЭлементыПоТегу(Тег: Строка): ЭлементыHtml
Доступность: Сервер

Получает дочерние элементы из поддерева по тегу. Если тег не удовлетворяет требованиям стандарту или не содержится в дереве, то будет возвращена пустая коллекция.

Примеры

метод ПолучитьВсеИзображения(Документ: ДокументHtml): ЭлементыHtml 
    возврат Документ.Тело.ПолучитьИзПоддереваЭлементыПоТегу("img")
;

ПолучитьИзПоддереваЭлементыССобственнымТекстом

ПолучитьИзПоддереваЭлементыССобственнымТекстом(Текст: Образец|Строка): ЭлементыHtml
Доступность: Сервер

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

Примеры

пер Документ = Парсер.Разобрать("<p style=\"margin: 0 0 16px;\">Мы пришлем Вам доступ в личный" +
 "кабинет в течении дня. Ожидайте.</p>\n" +
 "<p style=\"margin: 0 0 16px;\">Если вдруг по каким-то причинам вы не получили ключ доступа - напишите в онлайн" +
 "чат на нашем сайте, пожалуйста.</p>")
    .Результат
 
пер Элементы = Документ.Тело.ПолучитьИзПоддереваЭлементыССобственнымТекстом("личный кабинет")
Элементы[0].ВнешнийКод()
/*
Результат:
<p style="margin: 0 0 16px;">Мы пришлем Вам доступ в личный кабинет в течении дня. Ожидайте.</p>
*/

ПолучитьКлассыКакСтроку

ПолучитьКлассыКакСтроку(): Строка
Доступность: Сервер

Получить атрибут класса, как строку (классы будут разделены через пробел).

Примеры

// Дано Элемент.ВнешнийКод() <div id="app-switcher" class="aui-dropdown2 aui-style-default" role="menu"></div>
Элемент.ПолучитьКлассыКакСтроку() // будет равен "aui-dropdown2 aui-style-default"

ПолучитьПредыдущиеСоседниеЭлементы

ПолучитьПредыдущиеСоседниеЭлементы(): ЭлементыHtml
Доступность: Сервер

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

Примеры

/*
Код:
<div>
  <p id="1">Текст 1</p>
  <p id="2">Текст 2</p>
  <p id="3">Текст 3</p>
</div>
*/
пер Параграф = Документ.ПолучитьИзПоддереваЭлементыПоАтрибуту("p", "id", "3")[0]

пер ПервыеПараграфы = Параграф.ПолучитьПредыдущиеСоседниеЭлементы()
ПервыеПараграфы.ДобавитьКласс("textElement")
/*
Рузультат, код:
<div>
  <p id="1" class="textElement">Текст 1</p>
  <p id="2" class="textElement">Текст 2</p>
  <p id="3">Текст 3</p>
</div>
*/

ПолучитьСледующиеСоседниеЭлементы

ПолучитьСледующиеСоседниеЭлементы(): ЭлементыHtml
Доступность: Сервер

Получить элементы на том же уровне, что и текущий, идущие далее от элемента.

Примеры

// Есть документ с одной таблицей, в которой установлен заголовок, нужно всем обычным строкам (не заголовку) добавить 
// класс tableRaw
пер ЭлементTh = Документ.ПолучитьИзПоддереваЭлементыПоТегу("th")[0] // Ячейка заголовка
пер СтрокаЗаголовка = ЭлементTh.Родитель как ЭлементHtml
пер ОбычныеСтрокиТаблицы = СтрокаЗаголовка.ПолучитьСледующиеСоседниеЭлементы()
ОбычныеСтрокиТаблицы.ДобавитьКласс("tableRaw")

Удалить

Удалить(ВместеСДочерними: Булево)
Доступность: Сервер

Удаляет узел и перемещает дочерние узлы к родительскому. Применим, если текущий узел имеет родителя.

Примеры

НайтиКонтейнерСоСкриптами().Удалить(Истина)
// Удаляет все div, в которых есть скрипты ([УзелДанныхHtml]).

УдалитьДочерниеУзлы

УдалитьДочерниеУзлы()
Доступность: Сервер

Удаляет узел и перемещает дочерние узлы к родительскому. Применим, если текущий узел имеет родителя. Например, не применим для документа.


УдалитьКласс

УдалитьКласс(Класс: Строка)
Доступность: Сервер

Удалить класс по имени.


УстановитьКлассы

УстановитьКлассы(Классы: ЧитаемоеМножество<Строка>)
Доступность: Сервер

Установить атрибут класса по указанному множеству классов, удаляет предыдущее значение.

Примеры

// Дано Элемент.ВнешнийКод() <div id="app-switcher" class="aui-dropdown2 aui-style-default" role="menu"></div>
Элемент.Классы // будет содержать "aui-dropdown2", "aui-style-default"
Элемент.УстановитьКлассы({"colorized", "aui-dropdown2"})
Элемент.Классы // будет содержать "colorized", "aui-dropdown2"

Список унаследованных методов

Объект

УзелHtml

Список унаследованных свойств

УзелHtml