index.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. function onLoad() {
  2. document
  3. .querySelector("#selector-observer-btn")
  4. .addEventListener("click", selectorObserver);
  5. }
  6. document.addEventListener("DOMContentLoaded", onLoad);
  7. //#region SelectorObserver
  8. function selectorObserver() {
  9. const container = document.querySelector("#selector-observer-cont");
  10. const cont1 = document.createElement("div");
  11. cont1.id = "selector-observer-subcont1";
  12. cont1.classList.add("selector-observer-subcont");
  13. const cont2 = document.createElement("div");
  14. cont2.id = "selector-observer-subcont2";
  15. cont2.classList.add("selector-observer-subcont");
  16. const cont3 = document.createElement("div");
  17. cont3.id = "selector-observer-subcont3";
  18. cont3.classList.add("selector-observer-subcont");
  19. container.appendChild(cont1);
  20. addElements(1, cont1);
  21. setTimeout(() => {
  22. cont1.appendChild(cont2);
  23. addElements(2, cont2);
  24. setTimeout(() => {
  25. cont2.appendChild(cont3);
  26. addElements(3, cont3);
  27. }, 5000);
  28. }, 5000);
  29. }
  30. /**
  31. * @param {number} contNum
  32. * @param {Element} container
  33. */
  34. async function addElements(contNum, container) {
  35. for (let i = 0; i < 5; i++) {
  36. const div = document.createElement("div");
  37. div.classList.add("selector-observer-item");
  38. div.innerText = `Container #${contNum} - Item #${i}`;
  39. container.appendChild(div);
  40. await sleep(1000);
  41. }
  42. }
  43. //#region utils
  44. /** @param {number} ms */
  45. function sleep(ms) {
  46. return new Promise((resolve) => setTimeout(resolve, ms));
  47. }