Немного предыстории, чтобы понять, как это работает
У меня есть иерархия объектов Javascript, в этом случае я буду называть их спрайтами. Каждая ссылка на Sprite 1: 1 является элементом HTML.
Это слой абстракции для HTML & CSS;
В настоящее время при изменении свойства:
mySprite.set('width', 100);
он не будет обновлять элемент HTML синхронно, но запустит таймер в миллисекундах, чтобы дождаться других изменений, примененных к этому элементу HTML.
Ex:.
mySpite.set('width', 100);
после этого изменения спрайт становится недействительным и через 25 миллисекунд обновит элемент HTML
mySprite.set('height', 100);
теперь это перезапустит таймер на 25 миллисекунд и будет ждать 25 миллисекунд, чтобы обновить DOM одновременно с шириной и высотой вместо 2 изменений DOM
Проблема
Теперь проблема, с которой я сталкиваюсь, такова:
(Иерархия ниже представляет иерархию Sprites, давайте назовем их по имени, которое они имеют)
У меня есть эта иерархия и я представляю, что спрайты "aaaba" и "aaabc" меняют свой стиль. Затем спрайт "aaab" добавляет еще 3 дочерних спрайта (они показаны в скобках, "aaabd", "aaabe" и "aaabf").
или пошагово:
- aaaba.set ('ширина', 100);
- aaabc.set ('высота', 45);
- aaab.addChildren (... 3 детей ...);
До сих пор я не хотел бы делать какие-либо обновления для DOM.
После того, как все спрайты изменили свои свойства, добавили и удалили другие спрайты (КАК ОТКРЫТЬ ЭТОТ МОМЕНТ? С другим таймером 25 миллисекунд?), Я бы хотел работать так:
- Удалите элементы из DOM, которые собираются внести серьезные изменения: aaa.removeChild (aaab)
- Измените стиль, и поскольку они не в DOM, поскольку их родитель был удален на шаге 1, это не будет так дорого: aaaba.style.cssText = aaabc.style.cssText = "my new css"
- Присоединить дочерние элементы к элементу "aaab"
- Добавьте снова «aaab» к «aaa»: aaa.appendChild (aaab);
Таким образом, быстрее вносить изменения в DOM.
a
|-aa
| |-aaa
| | |-aaaa
| | |-aaab<
| | | |-aaaba<
| | | |-aaabb
| | | |-aaabc<
| | | |-(aaabd)<
| | | |-(aaabe)<
| | | |-(aaabf)<
| | |-aaac
| | |-aaad
| |-aab
| | |-aaba
| | |-aabb
| |-aac
|-ab
| |-aba
| |-abb
|-ac
|-aca
|-acb