ЭлементКолонкаТаблицыHTML.УстановитьАтрибут

Методы · SetAttribute

Устанавливает значение атрибута с указанным именем. Если атрибута с таким именем нет, то он будет создан.

Синтаксис

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

ЭлементКолонкаТаблицыHTML.УстановитьАтрибут (HTMLTableColElement.SetAttribute)

ЭлементКолонкаТаблицыHTML (HTMLTableColElement)

УстановитьАтрибут (SetAttribute)

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

Синтаксис:
УстановитьАтрибут(<Имя>, <Значение>)
Параметры:

<Имя> (обязательный)
Имя атрибута.

<Значение> (обязательный)
Тип: Строка.
Значение атрибута.
Описание:

Устанавливает значение атрибута с указанным именем.
Если атрибута с таким именем нет, то он будет создан.

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

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

Примечание:
Если имя атрибута содержит символы, не допустимые стандартом XML данного документа, или данный узел в режиме Только для чтения, будет инициировано исключение.
Использование в версии:

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

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

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

Пометить элементы учебным атрибутом и убрать пометку

Атрибут data-guide хранит номер урока. Для каждого вида элемента устанавливаем, читаем и удаляем именно его, не изменяя ссылки на ресурсы.

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

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

Подготовка

  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");
Для Каждого Пара Из Ожидаемые Цикл
    Узел = Документ.СоздатьЭлемент(Пара.Ключ);
    Если ТипЗнч(Узел) <> Тип(Пара.Значение) Тогда
        ВызватьИсключение "Фактический тип фабрики отличается для " + Пара.Ключ;
    КонецЕсли;
    Узел.УстановитьАтрибут("data-guide", "A-01");
    Сообщить(Узел.ЕстьАтрибут("data-guide"));
    Сообщить(Узел.ПолучитьАтрибут("data-guide") = "A-01");
    Атрибут = Узел.ПолучитьУзелАтрибута("data-guide");
    Если Атрибут = Неопределено Тогда
        ВызватьИсключение "Установленная учебная пометка не получена";
    КонецЕсли;
    Сообщить(Атрибут.ЭлементВладелец = Узел);
    Узел.УдалитьАтрибут("data-guide");
    Сообщить(Не Узел.ЕстьАтрибут("data-guide"));
    Сообщить(Узел.ДочерниеУзлы.Количество() = 0);
КонецЦикла;

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

  1. Служебное имя data-guide не является src, href, code или обработчиком события.

  2. ПолучитьАтрибут возвращает строку значения; ПолучитьУзелАтрибута возвращает отдельный объект атрибута.

  3. После удаления проверяем отсутствие пометки и сохранность пустой структуры элемента.

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

  1. Для каждого из 25 элементов пять проверок Истина; пометка в итоге отсутствует.

  2. Внутри элементов не появляются текстовые дети от установки строкового атрибута.

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

Показан полный жизненный цикл атрибута на конкретных типах элементов.

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

  1. Атрибут DOM и реквизит элемента управляемой формы — разные механизмы.

  2. Нельзя переносить значение произвольного атрибута в число без проверки формата.

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

Назначить роль идентификатора атрибуту по имени и по объекту

Имя data-guide-id само по себе не означает ID. Два метода устанавливают роль существующего атрибута и позволяют снять её.

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

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

Подготовка

  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");
Для Каждого Пара Из Ожидаемые Цикл
    Узел = Документ.СоздатьЭлемент(Пара.Ключ);
    Если ТипЗнч(Узел) <> Тип(Пара.Значение) Тогда
        ВызватьИсключение "Фактический тип фабрики отличается для " + Пара.Ключ;
    КонецЕсли;
    Узел.УстановитьАтрибут("data-guide-id", "lesson-" + Пара.Ключ);
    Атрибут = Узел.ПолучитьУзелАтрибута("data-guide-id");
    Если Атрибут = Неопределено Тогда
        ВызватьИсключение "Не найден собственный атрибут для назначения ID";
    КонецЕсли;
    Узел.УстановитьАтрибутИдентификатор("data-guide-id", Истина);
    Сообщить(Атрибут.ЯвляетсяИдентификатором);
    Узел.УстановитьУзелАтрибутаИдентификатора(Атрибут, Ложь);
    Сообщить(Не Атрибут.ЯвляетсяИдентификатором);
    Сообщить(Атрибут.Значение = "lesson-" + Пара.Ключ);
    Сообщить(Узел.РодительскийУзел = Неопределено);
КонецЦикла;

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

  1. Сначала создаём собственный атрибут; метод назначения ID не создаёт отсутствующий атрибут.

  2. По имени включаем роль идентификатора, по прикреплённому объекту выключаем.

  3. Строковое значение сохраняется; узел пока не вставлен и не становится доступным в документе от одной смены роли.

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

  1. Четыре проверки Истина: включённый ID, выключенный ID, прежнее значение и отсутствие родителя.

  2. Не делайте здесь поиск по документу: упражнение посвящено роли атрибута на отсоединённом элементе.

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

Показано отличие имени атрибута от признака ЯвляетсяИдентификатором.

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

  1. Атрибут должен принадлежать именно данному элементу.

  2. Вставляя элементы в общий документ, отдельно обеспечьте уникальные значения ID.

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

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

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

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

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