Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   MutationRecord - attributeName (https://javascript.ru/forum/events/84446-mutationrecord-attributename.html)

Andy_kun 11.09.2022 19:03

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.

Вот что то я не могу понять этого момента.

Aetae 11.09.2022 19:56

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

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

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

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

Andy_kun 11.09.2022 20:29

Спасибо! Понял.


Часовой пояс GMT +3, время: 02:21.