Создание DOM элементов

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 มี.ค. 2022
  • Быстрое создание DOM элементов для тех, кто ценит свое время.
    👁‍🗨 Телеграм: t.me/frontend_du2
    👁‍🗨 Discord сервер: / discord
    👁‍🗨 VK: frontend_du2

ความคิดเห็น • 26

  • @user-hc7wq9om9i
    @user-hc7wq9om9i ปีที่แล้ว +1

    Спасибо за полезную информацию 👍👍👍

    • @alex_dudukalo
      @alex_dudukalo  ปีที่แล้ว

      Спасибо за ваш отзыв и поддержку :)

  • @Sasha9433
    @Sasha9433 2 ปีที่แล้ว +1

    Интересная функция спасибо за видео урок!Лайк

    • @alex_dudukalo
      @alex_dudukalo  2 ปีที่แล้ว

      Рад помочь. Функцию можно доработать, например добавить добавление событий через нее :)

  • @carry-on-chaos4032
    @carry-on-chaos4032 ปีที่แล้ว +3

    Спасибо, спустя пол года вспомнил про это замечательное видео с рекурсивным добавлением элементов)
    Небольшой рефакторинг на мой вкус))
    ```
    const createElement = ({
    tag = "div",
    classList = [],
    params = {},
    parent = null,
    children = [],
    }) => {
    const elem = document.createElement(tag);
    elem.className = classList.join(" ");
    Object.assign(elem, params);
    if (parent !== null) parent.append(elem);
    for (child of children) {
    const { tag, classList, params } = child;
    createElement({
    tag,
    classList,
    params,
    parent: elem,
    });
    }
    return elem;
    };
    const div = createElement({
    tag: "div",
    classList: ["wrapper"],
    parent: document.body,
    children: [
    {
    tag: "h1",
    classList: ["grey", "big"],
    params: {
    textContent: "hello world",
    },
    },
    {
    tag: "button",
    classList: ["grey", "button"],
    params: {
    textContent: "Push",
    },
    },
    ],
    });
    ```

    • @alex_dudukalo
      @alex_dudukalo  ปีที่แล้ว +1

      Здравствуйте, спасибо за интересный вариант реализации этой функции. Да, код стал более сжатым. Конечно для новичка в программировании он стал менее читабельным. Но все же выглядет отлично. Понравились решения с деструктуризацией и разбиением массива класса. Здорово сделано. Сохраню ваш вариант для демонстрации. С наступившим вас новым годом :)

  • @Vladimir-yh2dl
    @Vladimir-yh2dl ปีที่แล้ว +1

    лучше видео на тему создание DOM, спасибо

    • @alex_dudukalo
      @alex_dudukalo  ปีที่แล้ว +1

      Спасибо вас :) Рад, что видео было полезным :)

  • @user-yg8nn9vp1w
    @user-yg8nn9vp1w 2 ปีที่แล้ว

    Александр, отличный урок, как раз дает понимание как сделать себе оптимизацию своего кода, и понять как работает все под капотом. Лучше потратить время и понять как работает все в нативном языке, потом любой инструмент написанный на JS. - можно понять на easy. Спасибо вам.

    • @alex_dudukalo
      @alex_dudukalo  2 ปีที่แล้ว

      Спасибо за комментарий. Да, конечно. Понимание работы внутри - ключ к быстрому написанию красивого когда )

  • @user-bg1zn8bw7l
    @user-bg1zn8bw7l 2 ปีที่แล้ว

    Спасибо за урок. Момент с использованием рекурсивной функции было сложно понять. Но, думаю, если часто пытаться этот способ использовать на практике, понимание придёт.

    • @alex_dudukalo
      @alex_dudukalo  2 ปีที่แล้ว

      Да, тема рекурсии заслуживает отдельного видео. Ставлю на заметку. Спасибо :)

  • @user-mv1dg9fg5m
    @user-mv1dg9fg5m 2 ปีที่แล้ว +1

    Круто! ключ parent я однозначно буду использовать, так как прописывать append каждый раз утомляет)) Не совсем понял зачем делать массив из объекта в четвертой строчке, что так ключ и значение в массиве будет, что ключ и его значение key.value будет в объекте. А вот по поводу минусов... мне кажется это то, что теперь мы создаем в одной переменной и элемент и его дочерний элемент и что бы обратиться к какому-то одному элементу нужно будет... даже не знаю пока что как к нему нужно правильно обращаться))) Но повесить обработчик на кнопку или инпут в форме будет уже не так просто. Спасибо за контент!

    • @alex_dudukalo
      @alex_dudukalo  2 ปีที่แล้ว

      Рад, что в этом виде было что то новое и полезное. Если в вопросе имеется ввиду параметр elements с массивом в значении, то скажу точно. Он сможет помочь вам вызовом всего одной функции создать сложную структуру DOM элементов :)

  • @megabulk
    @megabulk 2 ปีที่แล้ว +2

    Надо бы ещё запилить видео про прописы (точнее асинхронность в целом) и прототипы. Я в свое время долго не мог понять смысл прототипов и, когда разобрался, написал для себя статью с интересными ассоциациями. Думаю, можно на моём материале сделать видео.

    • @alex_dudukalo
      @alex_dudukalo  2 ปีที่แล้ว

      Всегда думаю об этом, но пока не решил, как материал подать. Что бы было понятно. Тема для объяснения сложная :) Но хочу это сделать. Спасибо.

    • @alex_dudukalo
      @alex_dudukalo  2 ปีที่แล้ว

      Только не совсем понял связь промисов и прототипов. Тут я бы разделил темы. Прототипы - классы, а промисы - асинхронность

  • @carry-on-chaos4032
    @carry-on-chaos4032 2 ปีที่แล้ว +1

    В начале видео свойства value и tabindex записываются как свойства объекта, а не как атрибуты, поэтому их и не видно, если вывести в консоль elem.value то должно показывать поидее

    • @alex_dudukalo
      @alex_dudukalo  2 ปีที่แล้ว

      Да да, не все объекты имеют реактивную связь с определенными атрибутами :)

  • @user-iq6np1sg3h
    @user-iq6np1sg3h 2 ปีที่แล้ว +1

    Спасибо за урок! Он очень полезный! При использовании этой функции в модулях как лучше ее изменить, чтобы можно было и вложить элементы в другие элементы, а допустим весь блок можно было добавлять уже в другом файле в документ?

    • @alex_dudukalo
      @alex_dudukalo  2 ปีที่แล้ว +1

      Рад, что видео было для вас полезным. Здесь я бы рекомендовал эту функцию поместить в отельный модуль. Так вы сможете подключать этот модуль в любом документе (на любой странице) И в итоге создавать элементы на нужной странице. :)

  • @megabulk
    @megabulk 2 ปีที่แล้ว

    Всё это конечно хорошо, но есть такая известная, но незаслуженно забыта библиотека как jQuery, которая как раз и призвана сократить написание кода. А её преимущества, наверное, ярче всего видны при выборке элементов и при навешивании на них обработчиков событий.

    • @alex_dudukalo
      @alex_dudukalo  2 ปีที่แล้ว +1

      jQuery - библиотека, которая служила нам верно и трудолюбиво. Мы провожаем ее с почестями и будем ее помнить. Она славна тем, что с ее помощью удобно получать нужные DOM элементы и многое другое. Но сейчас нативный JS многому научился и он практически одинаков во всех браузерах. Раньше проблему с кроссбраузерности решал jQuery. Нативный JS уже очень много умеет :)

  • @sergeykhmelnitsky5307
    @sergeykhmelnitsky5307 11 หลายเดือนก่อน +1

    а если в двух словах, зачем создавать DOM-элементы с помощью js, если есть HTML-файл, в котором можно ту же форму сверстать быстрее?

    • @alex_dudukalo
      @alex_dudukalo  11 หลายเดือนก่อน

      Здравствуйте, хороший вопрос. Этот динамическое создание элементов уже во время работы страницы. Сейчас многие сайты переходят на такой принцип работы. Элементы создаются и удаляются во время сайты и сайт перестраивается при каких то действиях пользователей. Вы нажимаете кнопку и у вас что то меняется или появляется и при этом страница не перегружается )

    • @sergeykhmelnitsky5307
      @sergeykhmelnitsky5307 11 หลายเดือนก่อน +1

      @@alex_dudukalo интересно. спасибо!