JavaScript DOM. Поиск элементов: getElement и querySelector

Поделиться
HTML-код
  • Опубликовано: 9 ноя 2024

Комментарии • 41

  • @AleksanderLamkov
    @AleksanderLamkov  2 месяца назад +3

    📌 Друзья, в телеграмме у нас есть отдельный чат, где вы можете задать вопрос по фронтенд-разработке и вам постараются помочь:
    💬 t.me/friendlyFrontendChat
    Если вам это интересно, присоединяйтесь, задавайте вопросы и помогайте другим 🙂

  • @vitkul
    @vitkul 9 дней назад +1

    Спасибо за отличное видео. Особенно понравился акцент на нэйминге и дата-атрибутах.

  • @РусланА-ф2н
    @РусланА-ф2н Месяц назад +2

    Я хоть и не новичок, но как же приятно видеть на просторах образовательного ру-контента такой крутой, понятный и полезный контент
    Александр, спасибо вам

  • @ЕвгенийКолобов-х4з
    @ЕвгенийКолобов-х4з Месяц назад +2

    Спасибо за отличное видео! Очень полезно подчеркнул для себя информацию с именованием через data!

  • @miwanjaGR
    @miwanjaGR Месяц назад +2

    Крутые рекомендации по неймингу! Также топ пояснение про статические и живые коллекции!

  • @СтаниславГорячев-г1ъ
    @СтаниславГорячев-г1ъ Месяц назад +2

    Спасибо вам за очень полезный контент

  • @SuvStreet
    @SuvStreet 2 месяца назад

    Я не новичок, но очень понравилось, обращение внимания на нейминг переменных 😉👍

  • @mouri_san
    @mouri_san 2 месяца назад +1

    Спасибо, Александр!

  • @smotritelyoutube
    @smotritelyoutube 2 месяца назад +1

    Нравится эта тема, супер, лайк!

  • @biscvie
    @biscvie 2 месяца назад +1

    Спасибо!

  • @svitboomer8840
    @svitboomer8840 2 месяца назад +1

    Лучший! Как всегда

  • @alexgrinberg1888
    @alexgrinberg1888 2 месяца назад

    Больше спасибо за видео. Очень помогло освежить знания. Можно в следующем уроке рассказать подробнее о том как работать с slot элементами? Как искать их по дереву и проходить в них. Вообщем все о slot. Спасибо большое.

    • @AleksanderLamkov
      @AleksanderLamkov  2 месяца назад

      Про slot - это Web Components API? В рамках этого курса про это, увы, не будет. Это весьма специфичная тема. Но отдельное видео, в принципе, сделать не проблема. Мне и самому интереснее копнуть в эту тему глубже.

  • @biscvie
    @biscvie 2 месяца назад +1

    Жду полноценного платного курса, если в свободном доступе такой крутой формат, то что будет в курсе, если он конечно будет)

    • @AleksanderLamkov
      @AleksanderLamkov  2 месяца назад +1

      Будет! Обязательно будет. И по качеству не хуже, чем бесплатные курсы на канале :)

    • @biscvie
      @biscvie 2 месяца назад

      @@AleksanderLamkov Спасибо!

    • @Triplanar
      @Triplanar 2 месяца назад

      @@AleksanderLamkov А будет ли еще один мастер-класс по верстке с использованием JS или это и будет в платном курсе?

    • @AleksanderLamkov
      @AleksanderLamkov  2 месяца назад +1

      Будет в виде бесплатного контента на канале. Сразу после окончания этого курса.

  • @ProgVipe
    @ProgVipe 2 месяца назад +1

    о, ты теперь и дом элементы будешь объяснять?) теперь только у тебя смотреть буду!

    • @AleksanderLamkov
      @AleksanderLamkov  2 месяца назад +2

      Уже давно! Ну, пару недель назад начал ведь про JS в браузере рассказывать 😅
      А впереди ещё два месяца концентрированного контента, по два видео в неделю 😎
      Курс планирую закончить в октябре.

    • @ProgVipe
      @ProgVipe 2 месяца назад +1

      @@AleksanderLamkov подскажи, а когда апи изучать?

    • @AleksanderLamkov
      @AleksanderLamkov  2 месяца назад +1

      После того, как в браузерном JS изучишь DOM (поиск элементов на странице, их свойства и атрибуты, размеры и координаты, управление стилями), события (понятия всплытия и погружение, делегирование событий, отмена дефолтного браузерного поведения, основные события мыши, клавиатуры, фокуса, событие отправки формы).

    • @fj-ru8pp
      @fj-ru8pp 2 месяца назад

      ​@@AleksanderLamkov А о чем конкретно речь? Какое api? Вроде растяжимое понятие, не понял контекста😮

    • @AleksanderLamkov
      @AleksanderLamkov  2 месяца назад +1

      Я подразумеваю тему клиент-серверного взаимодействия. Ну грубо говоря функция fetch, get / post запросы, обработка ответа от сервера, статусы запросов.

  • @yabr87
    @yabr87 2 месяца назад +1

    Я тоже предпочитаю использовать дата-атрибуты для поиска элементов. Стрелял пару раз себе в ногу с классами. Не критично но неприятно)

  • @viktoria7281
    @viktoria7281 Месяц назад

    5:40 интересно почему разработчики забывают про это, это же удобно

    • @AleksanderLamkov
      @AleksanderLamkov  Месяц назад +1

      Удобно как раз таки от document всегда искать, указывая в аргументах CSS-селектор посложнее. Но производительнее будет по-возможности использовать уже имеющуюся ссылку на DOM-элемент и уже от него искать вглубь дерева.

  • @AlekseiVavulo
    @AlekseiVavulo Месяц назад +1

    По душню... Псевдомассивы, такие как NodeList, возвращаемые методами вроде document.querySelectorAll(), часто фиксированы в момент создания. Это означает, что если DOM изменится, содержимое такого NodeList не обновится автоматически.

    • @AleksanderLamkov
      @AleksanderLamkov  Месяц назад

      Да, про разницу статической и живой коллекции было упомянуто в этом видео и в следующих уроках курса на этих особенностях неоднократно будет сделан акцент.

    • @AlekseiVavulo
      @AlekseiVavulo Месяц назад

      @@AleksanderLamkov будет практика на нативном js?

    • @AleksanderLamkov
      @AleksanderLamkov  Месяц назад

      Да, и в рамках курса в конце некоторых уроках и в целом, после курса, будет серия видео по отдельным компонентам на ванильном JS и мастер-класс по верстке с JS.

  • @viktoria7281
    @viktoria7281 Месяц назад

    5:31 интересно почему мы получим пустой nodeList а не null

    • @AleksanderLamkov
      @AleksanderLamkov  Месяц назад +1

      Чтобы было меньше ошибок в коде.
      С тем, что возвращает querySelectorAll, обычно работают так - перебирают методом forEach и выполняют какие-то действия, например:
      document
      .querySelectorAll('a')
      .forEach((element) => {

      })
      Если бы метод querySelectorAll возвращал null, пришлось бы делать дополнительные проверки:
      const linkElements = document.querySelectorAll('a')
      if (linkElements) {
      linkElements.forEach((element) => {

      })
      }
      Ну или применять повсюду оператор опциональной последовательности:
      document
      .querySelectorAll('a')
      ?.forEach((element) => {

      })

  • @Kotovar
    @Kotovar 2 месяца назад

    Слышал мнение, что querySelector не самый быстрый метод из подобных. Но вряд ли стоит учитывать это при оптимизации приложения?

    • @AleksanderLamkov
      @AleksanderLamkov  2 месяца назад +1

      Хм, не слышал о таком. А какие есть альтернативы? Типа getElementsByClassName для поиска по CSS-классам? На мой субъективный взгляд по CSS-классам искать в DOM-дереве - не лучшая практика. А поиск по селектору атрибута, который я пропагандирую в этом видео, возможен только через методы querySelector и querySelectorAll.
      В любом случае - проблема querySelector быть может и есть, но высосана из пальца, т. к. на перформанс по-большей части влияют другие факторы, типа неоптимального расхода памяти (неиспользующиеся лишние переменные, отсутствие оных и написание однотипных повторяющихся выражений вместо сохранения результата выражения в промежуточную переменную, утечки памяти и т. д. и т. п.)
      В общем, проблема не в синтаксисе JS, а в том, как им пользуются разработчики :)

    • @Kotovar
      @Kotovar 2 месяца назад

      ​@@AleksanderLamkov Ну вот что к примеру getElementById - самый быстрый из-за внутренних оптимизаций браузера. Но лично я сам стараюсь только querySelector использовать :) Мне кажется - это из той же области, что var в каких-то случаях эффективнее работает чем let, const. Короче - тема для гиков и холиваров :)

  • @Sharikov_stepan
    @Sharikov_stepan Месяц назад

    Какие могут возникнуть проблемы при поиске в DOM по классам?

    • @AleksanderLamkov
      @AleksanderLamkov  Месяц назад

      Никакие.
      Просто в моем понимании классы лучше использовать только в CSS-коде.
      Когда в JS-коде для доступа к элементам используются data-атрибуты, то при чтении разметки будет сразу понятно, какой элемент будет как-либо задействован в JS-коде, а какой нет.

  • @viktoria7281
    @viktoria7281 Месяц назад

    9:24 ты сказал querySelector и querySelectorAll покрывает 99% задач поэтому не используются эти
    а getElementById забыл перечислить или почему не сказал его?

    • @AleksanderLamkov
      @AleksanderLamkov  Месяц назад +1

      У getElementById нет тех преимуществ, которые есть в рассмотренных после 9:24 методах.
      Он возвращает всегда либо null, либо ссылку на первый DOM-элемент с определенным id. И значение этого выражения будет актуально только на момент вызова метода.
      Другие же методы, getElementsByTagName, getElementsByClassName и getElementsByName всегда возвращают живую коллекцию HTMLCollection, в которой всегда будут содержаться актуальные данные, соответствующие текущему состоянию DOM-дерева.

  • @viktoria7281
    @viktoria7281 Месяц назад

    форыч