Пошук елементів у dom

Стандарт DOM передбачає кілька засобів пошуку елемента. Це методи getElementById. getElementsByTagName і getElementsByName.

Найзручніший спосіб знайти елемент в DOM - це отримати його по id. Для цього використовується виклик document.getElementById (id)

Наприклад, наступний код змінить колір тексту на блакитний в div 'е c id = "dataKeeper":

Наступний спосіб - це отримати всі елементи з певним тегом, і серед них шукати потрібний. Для цього служить document.getElementsByTagName (tag). Вона повертає масив з елементів, що мають такий тег.

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

Що цікаво, getElementsByTagName можна викликати не тільки для document. але і взагалі для будь-якого елемента, у якого є тег (НЕ текстового).

При цьому будуть знайдені тільки ті об'єкти, які знаходяться під цим елементом.

Наприклад, наступний виклик отримує список елементів LI. знаходяться всередині першого тега div:

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

Наприклад, на такому DOM:

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

Метод document.getElementsByName (name) повертає всі елементи, у яких ім'я (атрибут name) дорівнює даному.

Він працює тільки з тими елементами, для яких в специфікації явно передбачений атрибут name. це form. input. a. select. textarea і ряд інших, більш рідкісних.

Метод document.getElementsByName не працюватиме з іншими елементами типу div. p і т.п.

Також є метод getElementsByClassName для пошуку елементів за класом, але він зовсім не працює в IE, тому в чистому вигляді їм ніхто не користується.

Часта помилка пов'язана з відсутністю літери s в назві методу getElementById. в той час як в інших методах ця буква є: getElements ByName.

Правило тут просте: один елемент - Element. багато - Elements. Всі методи * Elements * повертають список вузлів.

  • Версія для друку

Я б на вашому місці не говорив би так про ослика, він вніс великий внесок в розвиток інтернет-технологій. Для і взагалі, я сам виріс на IE 3 і тому мені він рідніше, ніж всі інші. Ну а які ви програмісти, якщо навіть не враховуєте всі браузера, а говорите "геть його". Така врахувати програміста, щоб враховувати всі. Бо нехрен лестощі в цю справу взагалі.

Повинен бути стандарт для програміста - одна мова, які все браузери розуміють чітко і однозначно. А писати веб розробникам для кожного браузера своїм кодом - це маразм. Це все одно, що писати програму під всі операційні системи відразу.

Тут відразу кілька помилок:

Перша і найочевидніша - функція writerel описана, але ніде не викликається

  • Далі - такий скрипт дійсно виконується під час завантаження сторінки. Але, так як він описаний в самому початку тега BODY, то буде виконаний до відтворення будь-яких елементів всередині нього. Тобто, якщо в скрипті ви хочете звернутися до елементу, то на момент виконання скрипта елемент вже повинен бути відмалювали.

    Таким чином, у вашому випадку потрібно перенести тег script як мінімум нижче тега div. А якщо планується додавати ще елементи в код, то надійніше всього буде розмістити тег script в самому кінці тіла документа, перед закриває тегом body.

    (Насправді це не повноцінний масив Array, а подібний йому об'єкт, але це вже особливості внутрішнього устрою мови, звертатися з ним все одно потрібно як зі звичайним масивом.)

  • І вже не помилка, але дрібне зауваження - якщо хочете дотримуватися хорошого стилю програмування, то не варто використовувати для обмеження рядків і лапки, і апострофи в одному і тому ж ділянці коду. Виберіть який-небудь один обмежувач і використовуйте його на протязі всього коду.
  • Підводячи підсумок - у вашому випадку код повинен виглядати як мінімум так:

    Добрий день.
    Підкажіть будь ласка. Потрібно для посилань в параграфі (p) застосувати клас "lightbox"
    Використовую поки такий код:
    var els = document.getElementsByTagName ( 'a');
    for (var i = 0; i els [i] .setAttribute ( 'class', 'lightbox');

    А що буде, якщо скопіювати (клонувати) вузол, який містить ID?
    У копії не д.б. ID або все-таки ID стане не унікальним?

    Схожі статті