Как найти элемент по его идентификатору

  1. Поиск по id
  2. Поиск по тегу
  3. Получить всех потомков
  4. Поиск по name: getElementsByName
  5. Другие способы

Стандарт DOM предусматривает несколько средств поиска элемента. Это методы getElementById, getElementsByTagName и getElementsByName.

Более мощные способы поиска предлагают javascript-библиотеки.

Поиск по id

Самый удобный способ найти элемент в DOM — это получить его по id. Для этого используется вызов document.getElementById(id)

Например, следующий код изменит цвет текста на голубой в div‘е c id="dataKeeper":

document.getElementById('dataKeeper').style.color = 'blue'

Поиск по тегу

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

Например, можно получить второй элемент(нумерация в массиве идет с нуля) с тэгом li:

document.getElementsByTagName('LI')[1]

Что интересно, getElementsByTagName можно вызывать не только для document, но и вообще для любого элемента, у которого есть тег (не текстового).

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

Например, следующий вызов получает список элементов LI, находящихся внутри первого тега div:

document.getElementsByTagName('DIV')[0].getElementsByTagName('LI')

Получить всех потомков

Вызов elem.getElementsByTagName('*') вернет список из всех детей узла elem в порядке их обхода.

Например, на таком DOM:

<div id="d1">
  <ol id="ol1">
    <li id="li1">1</li>
    <li id="li2">2</li>
  </ol>
</div>

Такой код:

var div = document.getElementById('d1')
var elems = div.getElementsByTagName('*')

for(var i=0; i<elems.length; i++) alert(elems[i].id)

Выведет последовательность: ol1, li1, li2.

Поиск по name: getElementsByName

Метод document.getElementsByName(name) возвращает все элементы, у которых имя (атрибут name) равно данному.

Он работает только с теми элементами, для которых в спецификации явно предусмотрен атрибут name: это form, input, a, select, textarea и ряд других, более редких.

Метод document.getElementsByName не будет работать с остальными элементами типа div,p и т.п.

Другие способы

Существуют и другие способы поиска по DOM: XPath, cssQuery и т.п. Как правило, они реализуются javascript-библиотеками для расширения стандартных возможностей браузеров.

Также есть метод getElementsByClassName для поиска элементов по классу, но он совсем не работает в IE, поэтому в чистом виде им никто не пользуется.

Частая опечатка связана с отсутствием буквы s в названии метода getElementById, в то время как в других методах эта буква есть: getElementsByName.

Правило здесь простое: один элемент — Element, много — Elements. Все методы *Elements* возвращают список узлов.

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

Поиск HTML элементов

Часто в JavaScript необходимо проводить определенные манипуляции с HTML элементами.

Чтобы это сделать, сначала нужно найти требуемый элемент. Найти HTML элемент можно несколькими способами:

  • по идентификатору id
  • по имени тега
  • по имени класса
  • по селекторам CSS
  • по наборам объектов HTML

Поиск HTML элемента по идентификатору

Самый простой способ найти HTML элемент в DOM — это использовать его идентификатор id.

В следующем примере мы ищем элемент с id=»intro»:


var myElement = document.getElementById("intro"); 

Если элемент будет найден, то он будет возвращен в виде объекта (в переменную myElement).

Если элемент не будет найден, то в переменная myElement будет содержать значение null.

Поиск HTML элемента по имени тега

В следующем примере мы ищем все элементы <p>:


var x = document.getElementsByTagName("p"); 

В следующем примере сначала происходит поиск элемента с id=»main», а затем всех элементов <p> внутри «main»:


var x = document.getElementById("main");
var y = x.getElementsByTagName("p"); 

Поиск HTML элемента по имени класса

Если нужно найти все HTML элементы с одним и тем же именем класса, то используют метод getElementsByClassName().

В следующем примере возвращается список всех элементов с атрибутом class=»intro»:


var x = document.getElementsByClassName("intro"); 

Внимание! Поиск элементов по имени класса не работает в Internet Explorer 8 и более ранних версиях.

Поиск HTML элемента по CSS селекторам

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

В следующем примере возвращается список всех элементов <p> с атрибутом class=»intro»:


var x = document.querySelectorAll("p.intro"); 

Внимание! Метод querySelectorAll() не работает в Internet Explorer 8 и более ранних версиях.

Поиск HTML элемента по наборам HTML объектов

В следующем примере производится поиск элемента формы с атрибутом id=»frm1″ в наборе объектов forms, и отображаются все значения элементов:


var x = document.forms["frm1"];
var text = "";
var i;
for (i = 0; i < x.length; i++) {
    text += x.elements[i].value + "<br>";
}
document.getElementById("demo").innerHTML = text; 

Также доступны следующие HTML объекты (и наборы объектов):

  • document.anchors
  • document.body
  • document.documentElement
  • document.embeds
  • document.forms
  • document.head
  • document.images
  • document.links
  • document.scripts
  • document.title
   YF

30.06.11 — 12:07

Есть идентификатор вида : 209:971a0018f34e121411e03c1de5b80387

Хочу найти что за объект в базе ему соответствует. Как?

   Amiralnar

1 — 30.06.11 — 12:09

А где ты его берешь?

   Axel2009

2 — 30.06.11 — 12:09

шерстить каждый объект отдельно

   Fragster

3 — 30.06.11 — 12:10

209 — идентификатор типа, остальное — перемиксованный объект УникальныйИдентификатор

   YF

4 — 30.06.11 — 12:10

(1) Да после обмена делаю ТИИ оно говорит:

Проверка логической целостности. Последовательность.Взаиморасчеты <Объект не найден> (209:971a0018f34e121411e03c1de5b80387)

   Неверная ссылка на регистратор.

   Рэйв

5 — 30.06.11 — 12:10

НовыйGUID = Новый УникальныйИдентификатор(ТвойГуид);

СсылкаГУИД=Документы.ВидДок.ПолучитьСсылку(НовыйGUID);

   Рэйв

6 — 30.06.11 — 12:11

(4)Если <Объект не найден> , то с чего ты взял, что ты его найдешь если база не нашла?

   YF

7 — 30.06.11 — 12:11

(5) щас попробую

   YF

8 — 30.06.11 — 12:12

(6) Ну я же на копии, у меня есть и оригинал, где обмен не запускал …

   Fragster

9 — 30.06.11 — 12:12

(5) читай ветку

(4) блииин. сделай запрос по регистру «Взаиморасчеты» примерно такой

Выбрать

 Взаиморасчеты.Регистратор

Из

 РегистрНакопления.Взаиморасчеты

Где

 Взаиморасчеты.Регистратор.Номер Есть NULL

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

   Fragster

10 — 30.06.11 — 12:13

ну а вообще — после обмена — это нормально, если криво правила настроены, или не криво, но это заложено в логику

   Рэйв

11 — 30.06.11 — 12:14

(9)<Объект не найден>  <> NULL

   Рэйв

12 — 30.06.11 — 12:14

+ Ссылка не пустая. Она битая

   YF

13 — 30.06.11 — 12:15

(10) Самое прикольное, что это стандартный обмен БП 2.0 по организации. Там постоянно вылезают такие бяки

   Defender aka LINN

14 — 30.06.11 — 12:16

Выбрать Регистратор Из Последовательность.Взаиморасчеты где Регистратор.Ссылка есть NULL

Но что ты в базе собрался искать, если проблема как раз в том, что в базе его нет?

   Fragster

15 — 30.06.11 — 12:16

(11) я там не зря написал «.Номер»

   Defender aka LINN

16 — 30.06.11 — 12:18

(11) А не является ли «.Номер» неявным левым соединением?

Варианты ответа:

1) да, является.

2) нет, является.

   Fragster

17 — 30.06.11 — 12:19

(11) и кстати, да:

NULL <> NULL

   SalavatUlaev

18 — 30.06.11 — 12:20

раз объект не найден, то нет его нигде. Если база SQL, восстанавливай бекап, ищи в SQL таблицах средствами SQL, по таблице и поймешь что за объект

   luckyluke

19 — 30.06.11 — 12:21

(18) в копии он может и оказаться, почему же нигде?

   Defender aka LINN

20 — 30.06.11 — 12:22

(18) Ащета запрос из (9) дает тебе готовую ссылку. У которой даже и тип имеется. Для зачем что-то по таблицам SQL искать?

   YF

21 — 30.06.11 — 12:23

+(19) В том и дело, что он где-то есть: либо в базе до обмена, либо в узле откуда обмен принимали …

Вот и хочу найти что это было и почему объект удалился, а из последовательности не изьялся …

   YF

22 — 30.06.11 — 12:24

(20) В запросе (9) обращаемся к регистру накопления, но ТИИ не нашла в нем ссылок на несуществующие объекты …

   SalavatUlaev

23 — 30.06.11 — 12:24

(20) Не увидел 4 сообщение. Думал вообще ничего не известно, кроме гуида

   Fragster

24 — 30.06.11 — 12:25

(22) ну удали из последовательности

   Defender aka LINN

25 — 30.06.11 — 12:41

(22) Ну, ять, в (14) Посмотри. БОЛЬШАЯ разница, ага…

   YF

26 — 30.06.11 — 12:45

(25) Да разница-то небольшая, только что там в последовательности-то найдешь? Ну найдешь битые записи, а что за объект был все равно не известно …

   Fragster

27 — 30.06.11 — 12:53

ПЦ

   Defender aka LINN

28 — 30.06.11 — 13:23

(26) рукалицо…

   Amiralnar

29 — 30.06.11 — 13:30

(17) (NULL IS NULL) = TRUE

   Axel2009

30 — 30.06.11 — 13:51

ТЗ = ПолучитьСтруктуруХраненияБазыДанных();

   Для Каждого Строка Из ТЗ Цикл

       Если Не ЗначениеЗаполнено(Строка.ИмяТаблицы) Тогда Продолжить; КонецЕсли;

       ПозТочки = Найти(Строка.ИмяТаблицыХранения, «.»);

       Если ПозТочки > 0 Тогда

           Продолжить;

           ИмяТаблицы = Лев(Строка.ИмяТаблицыХранения, ПозТочки — 1);

       КонецЕсли;

       ИтоговоеЧисло = «»;

       Для Сч = 1 По СтрДлина(Строка.ИмяТаблицыХранения) Цикл

           Символ = Сред(Строка.ИмяТаблицыХранения, Сч, 1);

           Если Найти(«0123456789», Символ) > 0 Тогда

               ИтоговоеЧисло = ИтоговоеЧисло + Символ;

           КонецЕсли;

       КонецЦикла;

       Если ИтоговоеЧисло = «209» Тогда

           Сообщить(Строка.ИмяТаблицы);

       КонецЕсли;

   КонецЦикла;

   Defender aka LINN

31 — 30.06.11 — 13:53

(30) А что *это* делает?

   Axel2009

32 — 30.06.11 — 13:58

(30) поможет узнать имя объекта по типу 209..

   Axel2009

33 — 30.06.11 — 14:01

(31) это запустить в базе где отсутствует

(30)+

потом в базе источнике запустить

   Поз = Найти(СтрокаОбъекта, «:»);

   Тип = Лев(СтрокаОбъекта, Поз — 1);

   СтрокаУИД = Сред(СтрокаОбъекта, Поз + 1);

   СтрокаУИД = Сред(СтрокаУИД, 24, 8) + «-» + Сред(СтрокаУИД, 20, 4) + «-» + Сред(СтрокаУИД, 16, 4) + «-» + Сред(СтрокаУИД, 1, 4) + «-» + Сред(СтрокаУИД, 5, 12);

   Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаУИД));

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

   Defender aka LINN

34 — 30.06.11 — 14:01

(32) см (14)

   Axel2009

35 — 30.06.11 — 14:03

(34) и что это покажет? что «объект не найден <209:971a0018f34e121411e03c1de5b80387>»?? а как понять что за объект конкретно?

   Fragster

36 — 30.06.11 — 14:06

(35) ссылка будет на конкретный объект метаданных

   Defender aka LINN

37 — 30.06.11 — 14:06

(35) рукалицо…

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать РАЗЛИЧНЫЕ Регистратор Из Последовательность.Взаиморасчеты где Регистратор.Ссылка есть NULL";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Сообщить(ТипЗнч(Выборка.Регистратор));
КонецЦикла;
   Fragster

38 — 30.06.11 — 14:06

хоть и отсутствующий

  

Axel2009

39 — 30.06.11 — 14:13

(37) был не прав.

&НаСервере

Функция ПодключитьБазуНаСервере(Соединение = "")

Объект.ФайловаяБазаДанных=Ложь;

Объект.Сервер="srv1с";

Объект.База="buh";

Объект.ИмяПользователя="Obmen";

Объект.Пароль="1qaz";

// Подключение к 1С

Если Объект.ФайловаяБазаДанных Тогда

СтрокаПодключения = "file='" + Объект.ПутьКБазе + "'; usr='" + Объект.ИмяПользователя + "'; pwd='" + Объект.Пароль + "';";

Иначе

СтрокаПодключения = "srvr='" + Объект.Сервер + "'; ref='" + Объект.База + "'; usr='" + Объект.ИмяПользователя + "'; pwd='" + Объект.Пароль + "';";

КонецЕсли;

Попытка

V8 = Новый COMObject("V83.COMConnector");

Соединение = V8.Connect(СтрокаПодключения);

ЕстьСоединение = Истина;

Исключение

ЕстьСоединение = Ложь;

Сообщить(ОписаниеОшибки());

КонецПопытки;

Возврат Соединение;

КонецФункции

&НаСервере

Процедура ОбновитьДанныеПлатежейНаСервере()

Соединение = ПодключитьБазуНаСервере();

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

|ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка КАК Ссылка,

|ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа КАК ОснованиеПлатежа,

|ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Сумма КАК Сумма

|ИЗ

|Документ.ПоступлениеБезналичныхДенежныхСредств.РасшифровкаПлатежа КАК ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа

|ГДЕ

|НЕ ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа ССЫЛКА Документ.ЗаказКлиента";

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

УИД = ВыборкаДетальныеЗаписи.Ссылка.УникальныйИдентификатор();

СсылкаНаДок = Соединение.Документы.ПоступлениеНаРасчетныйСчет.ПолучитьСсылку(Соединение.NewObject("УникальныйИдентификатор",Строка(УИД)));

//Сообщить(СсылкаНаДок.Номер);

Для каждого СтрокаИсточник Из СсылкаНаДок.РасшифровкаПлатежа Цикл

//Сообщить("Счет: "+Строка(СтрокаИсточник.СчетНаОплату.Номер));

УИД = Соединение.String(СтрокаИсточник.СчетНаОплату.УникальныйИдентификатор());

текДок= Документы.ЗаказКлиента.ПолучитьСсылку(Новый УникальныйИдентификатор(УИД));

Если ЗначениеЗаполнено(текДок) Тогда

Сообщить(текДок);

текОбъект=ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

текОбъект.РасшифровкаПлатежа[0].ОснованиеПлатежа= текДок;

текОбъект.РасшифровкаПлатежа[0].Заказ= текДок;

текОбъект.Записать(РежимЗаписиДокумента.Проведение);

КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецПроцедуры

&НаКлиенте

Процедура ОбновитьДанныеПлатежей(Команда)

ОбновитьДанныеПлатежейНаСервере();

КонецПроцедуры

Пример поиска:

ГУИД = "4b9c2fa7-3824-11ea-ab9e-38d547def818";
ОбъектСсылка = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ГУИД));
сообщить(ОбъектСсылка);

если объект не найден:

<Объект не найден> (206:ab9e38d547def81811ea38244b9c2fa7)

если объект найден (наименование объекта):

Желтый НМ 0,05кг

Рубрики

  • Все
  • CRM
    • Битрикс24
  • Frameworks
    • Laravel
    • Bootstrap 4
    • React Native
  • CMS
    • OpenCart 3
    • WordPress
      • Функции
      • Авторские функции
    • 1С-Битрикс
    • MODX
  • АТС
    • Asterisk
  • OS
    • Linux
      • Fedora
      • Linux Mint
      • Manjaro
      • Rocky Linux
      • CentOS
      • Debian
      • Ubuntu
    • Windows
    • macOS
  • Контейнеризация
    • Docker
  • Программирование
    • 1C
    • Javascript
    • Node JS
    • PHP
    • Python
    • Android Studio
    • Web
      • Библиотеки
  • Базы данных
    • MySQL
  • Плагины DW
    • WordPress
  • Редакторы и IDE
    • PHPStorm
    • VS Code
    • Sublime Text 3
    • Notepad++
  • Софт
  • Blockchain

Свежие комментарии

Май 2023

Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31  

Понравилась статья? Поделить с друзьями:
  • Площадь треугольника как найти формулы все периметр
  • Как найти предлог встретиться с мужчиной
  • Проблема сетевого адаптера или точки доступа как исправить
  • Как найти удельную теплоемкость при постоянном давлении
  • Как составить заявление на отказ от доли в квартире