Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

Ну или на край, чтобы можно было написать код, который будет выполняться сразу при появлении DOM, что-то типа <span onload="MyFunc(this)"></span>
Чтобы не делать нагромождений типа <span id="MyDOM"></span><script>MyFunc(getElementById( 'MyDOM'));</script>

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

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

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

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

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

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

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

icq: 512-765
skype: alexp.frl
По умолчанию

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

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

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

Вадим, onload не пашет.
7in вне форума   Ответить с цитированием
Старый 26.01.2016, 16:12   #5
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,025
Репутация: 3738

icq: 512-765
skype: alexp.frl
По умолчанию

Чем вам весь документ не нравится? DOMContentLoaded не ждет же всех картинок и т.п. как onload.
Alex11223 вне форума   Ответить с цитированием
Старый 26.01.2016, 16:29   #6
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Адрес: Самара
Сообщений: 291
Репутация: 147
По умолчанию

Да? Сейчас попробую, спасибо.
Но в идеале – всё же к отдельным объектам привязываться... есть такая возможность?
7in вне форума   Ответить с цитированием
Старый 26.01.2016, 18:32   #7
come-on
Профессионал
 
Регистрация: 21.10.2015
Сообщений: 1,414
Репутация: 414
По умолчанию

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

Логика такова, что это виджет.
7in вне форума   Ответить с цитированием
Старый 26.01.2016, 20:25   #9
Naive
Раздолбайских Дел
Профессионал
 
Аватар для Naive
 
Регистрация: 22.05.2009
Адрес: Екатеринбург
Сообщений: 3,809
Репутация: 2359
По умолчанию

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

Самостоятельно следить за изменением дом-структуры очень тяжелая по ресурсам задача.
__________________
Работаю. В этот раз за деньги.
Жду ваши искренние спасибы на яндекс-кошелек: 410011068154587
Naive вне форума   Ответить с цитированием
Старый 27.01.2016, 04:28   #10
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 351
Репутация: 216

icq: 639 544 131
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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 17:26
Дерево DOM fclmhooligan JavaScript, Ajax 1 24.11.2008 15:11


08:24.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.