Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.09.2022, 19:03
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

MutationRecord - attributeName
Подскажите пожалуйста, не всоем понимаю, что означает attributeName в MutationRecord:

https://developer.mozilla.org/en-US/...MutationRecord

MutationRecord.attributeName	String	Возвращает локальное имя измененного атрибута или null.



Возвращает локальное имя измененного атрибута или null - что в данном случае имеется ввиду под "измененным атрибутом" ?

Изменение значение атрибута или изменение имени атрибута ??

Спрашиваю, потому что получается такая ситуация:

function my_observer(MutationRecord_, observer_object)
      {

           for(let i=0; i<MutationRecord_.length;i++)   
          {

              let my_MutationRecord_target = MutationRecord_[i].target; 
              let my_MutationRecord_type = MutationRecord_[i].type;

                if(my_MutationRecord_type == "attributes")
               {
                   my_MutationRecord_attributeName = MutationRecord_[i].attributeName; 

                  my_MutationRecord_attributeName_String_value = my_MutationRecord_target.getAttribute(my_MutationRecord_attributeName);
               }
          }
      }


-То есть вызывается callback Mutationobserver
-В нем я определяю тип Mutationrecord
-Если Mutationrecord == "attributes" - я получаю имя атрибута.

И вот тут не понимаю: я вывоу на консоль MutationRecord_[i].target и пыаюсь в нем найти атрибут, который возвратил MutationRecord_[i].attributeName - для примера это "id" - но такого атрибута нет в Ноде MutationRecord_[i].target и соответвуенно значение аттрибута, когда я его пытась получить - возвращается null.

Вот что то я не могу понять этого момента.
Ответить с цитированием
  #2 (permalink)  
Старый 11.09.2022, 19:56
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Ну видать мутация заключается в том, что атрибут удалили и логично что его нет.)

Возможно(но маловероятно) также, что меняется атрибут в другом неймспейсе и тебе потребуется MutationRecord.attributeNamespace и getAttributeNS.

Предыдущее значение можно узнать через MutationRecord.oldValue (для этого при создании наблюдателя надо не забыть добавить attributeOldValue).

P.S. Возможно также у тебя имеется непонимание, что Observer - это не EventListener: Observer только наблюдает, и сообщает о своих наблюдениях чуть позже, мир при этом не стоит на месте, в отличие от EventListener который "останавливает мир" пока не произойдёт обработка.
__________________
29375, 35

Последний раз редактировалось Aetae, 11.09.2022 в 20:01.
Ответить с цитированием
  #3 (permalink)  
Старый 11.09.2022, 20:29
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

Спасибо! Понял.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск