Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2016, 13:03   #1
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию Отследить появление DOM

Можно ли сделать так, чтобы при появлении (т.е. по мере загрузки страницы браузером, не при создании скриптом!!!) DOM с определённым классом или id выполнялась моя функция?
Мне нужно заменить всё содержимое (innerHTML) объектов с классом "abc" на определённые значения. Я могу написать window.onload, но тогда придётся ждать загрузки всей страницы. А можно ли сделать так, чтобы замена проводилась сразу после загрузки каждого DOM ?

Ну или на край, чтобы можно было написать код, который будет выполняться сразу при появлении DOM, что-то типа <span onload="MyFunc(this)"></span>
Чтобы не делать нагромождений типа <span id="MyDOM"></span><script>MyFunc(getElementById( 'MyDOM'));</script>
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru

Последний раз редактировалось 7in; 27.01.2016 в 11:03.
7in вне форума Ответить с цитированием
Старый 26.01.2016, 13:16   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

ID может присутствовать только у одного элемента. Если планируете сделать таких элементов несколько, то придётся воспользоваться классом.

Я правильно понимаю, что вы хотите поменять innerHTML у каждого элемента с таким классом при его загрузке?

Попробуйте такой код
Код:
var T = document.getElementsByClassName("yourClass");

for (var i = 0; i <= T.length; i++) {
  T[i].onload = function () {
    this.innetHTML = "что-то своё";
  };
};

Последний раз редактировалось Вадим Мошев; 26.01.2016 в 13:19.
Вадим Мошев вне форума Ответить с цитированием
Старый 26.01.2016, 13:52   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Я могу написать window.onload, но тогда придётся ждать загрузки всей страницы.
DOMContentLoaded https://developer.mozilla.org/en-US/...MContentLoaded ($(document).ready в jQuery) нужен что ли?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.01.2016, 15:00   #4
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Нет, нет, это всё не то... :-/

Alex11223, мне нужно выполнять код не когда загрузится ВЕСЬ документ, а сразу (моментально) после загрузки каждого объекта (span, div и пр).

Вадим, onload не пашет.
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 26.01.2016, 15:12   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Чем вам весь документ не нравится? DOMContentLoaded не ждет же всех картинок и т.п. как onload.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.01.2016, 15:29   #6
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Да? Сейчас попробую, спасибо.
Но в идеале – всё же к отдельным объектам привязываться... есть такая возможность?
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 26.01.2016, 17:32   #7
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Что то мне кажется у вас с логикой не лады, какой смысл менять сразу если это можно сделать на сервере.
come-on вне форума Ответить с цитированием
Старый 26.01.2016, 18:36   #8
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Логика такова, что это виджет.
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 26.01.2016, 19:25   #9
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от 7in Посмотреть сообщение
Логика такова, что это виджет.
Тогда нафига тебе за этим следить? Виджет вставляется либо эмбедом (старье), либо айфреймом (самое надежное), либо скриптом.
1 - явно не твое
2 - не важно ждать ли весь дом во фрейме или сразу играться
3
- если блоки твои, то надеюсь ты их не через innerHTML пихаешь?
- если чужие, то логично скрипт засунуть после необходимых блоков и обязать юзера это делать в соответствии с инструкцией
- если блоки подгружаются динамически, то заставь юзера триггерить функцию обновления, и выдай соответствующую ручку на это

Самостоятельно следить за изменением дом-структуры очень тяжелая по ресурсам задача.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 27.01.2016, 03:28   #10
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

Пользуйтесь обзервером, он для вашей цели и создан:

https://developer.mozilla.org/en/doc...tationObserver
rlib вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DOM Voipp JavaScript, Ajax 2 25.09.2013 15:49
HTML - DOM exn Работа с сетью в Delphi 1 17.02.2013 11:23
Отследить появление новой записи в БД alekslep БД в Delphi 0 18.10.2010 13:38
Как отследить появление нового диска? 54rus Помощь студентам 13 10.02.2010 16:26
Дерево DOM fclmhooligan JavaScript, Ajax 1 24.11.2008 14:11