Filtrando elementos na DOM com JavaScript PURO!

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ส.ค. 2024
  • Ofertas imperdíveis da Black Friday Rocketseat: rseat.in/Ofert...
    Pra chegar até aqui você provavelmente usou alguns sistemas de pesquisa. Como devs, estamos sempre pensado como as ferramentas do nosso dia a dia são criadas.
    Algumas podem ser simples, outras mais complexas. Algumas já foram até pedidas durante o teste técnico de entrevistas de emprego..
    No vídeo de hoje, Maykão mostra na prática como é criar um sistema de filtro para elementos DOM usando JavaScript na sua mais pura forma.
    Link do projeto inicial
    fronteditor.de...
    -----
    Conecte-se a 200mil devs e avance para o próximo nível com a nossa plataforma: rocketseat.com...
    Cadastre-se na nossa plataforma: app.rocketseat...
    Junte-se a mais de 392mil devs em nossa comunidade no Discord: / discord
    Acompanhe a Rocketseat nas redes sociais:
    Twitter: @rocketseat
    Facebook: @rocketseat
    Instagram: @rocketseat_oficial

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

  • @upglobalinternacionalgomes3498
    @upglobalinternacionalgomes3498 3 หลายเดือนก่อน

    Perfeito em didática, e muito bem planejado e explicado.
    Parabéns!

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

    Muito obrigado!

  • @helenamignogna2499
    @helenamignogna2499 9 หลายเดือนก่อน

    Me ajudou muito! Obrigadaaa! 😃😃😃😃

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

    Em 20 minutos de aula me ajudou a concluir o que eu queria a mais de 2 dias tentando. Muito obrigado!

  • @henriquepassos3825
    @henriquepassos3825 ปีที่แล้ว +5

    Esse foi um dos melhores métodos que vi para ensinar um iniciante em javascript, o passo a passo sem o código é essencial, pois o aluno precisa pensar em como resolver isso

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

      Depende, pelo q ouvi de muitos devs, é sempre bom começar com tudo pronto ("copiar código pronto"), vc vai entendendo os pedacinnhos aos poucos, testando, modificando-os e dominando o básico no processo, depois disso é q é melhor desafiar apenas com instruções, pq, os iniciantes mesmo, eles não fazem nem ideia do q deveria pesquisar, de como começar, ver as instruções/pseudo código e pensar em como "codá-las", não exatamente pra iniciantes.

  • @aasdffut
    @aasdffut ปีที่แล้ว +9

    Excelente conteúdo. E disso que precisamos, pequenos projetos. Obrigado. Um dia apareço por aí na Rocktseat para fazer um curso.

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

    Em menos de 10 minutos, adiantou um curso de 2 semanas.

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

      😍👏🏽

  • @marcosbarros883
    @marcosbarros883 3 หลายเดือนก่อน

    Essa aula do Maykão ficou simplesmente sensacional. 👏

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

    esse cara é monstro !!

  • @app2028
    @app2028 5 หลายเดือนก่อน

    Seus vídeos são únicos um domínio digno do seu tempo é experiência parabéns.
    Sebastião de Goiânia Goiás 🎉

  • @luis.s.daniel
    @luis.s.daniel ปีที่แล้ว +1

    Cara, muito bom este "has".

  • @guilhermeviola4477
    @guilhermeviola4477 ปีที่แล้ว +5

    Obrigado pelo conteudo de qualidade! Fiz primeiro com a sua resolução, depois testei com forEach e ternário.
    const filterInput = document.querySelector("#filter")
    const cards = document.querySelectorAll(".cards li")
    filterInput.addEventListener("input", filterCards)
    function filterCards() {
    if(filterInput.value !== "") {
    cards.forEach(card => {
    let title = card.querySelector("h2").textContent.toLowerCase()
    let filterText = filterInput.value.toLowerCase()
    !title.includes(filterText) ? card.style.display = "none" : card.style.display = "block"
    })
    } else {
    cards.forEach(card => {
    card.style.display = "block"
    })
    }
    }

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

      Muito bom, amigo! Sempre bom melhorar o código.

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

      Show de bola!!

  • @Matt_BB_21
    @Matt_BB_21 6 หลายเดือนก่อน

    Acabei de aplicar no projeto aqui da empresa. Excelente explicação.

  • @AdemarMorais-bv4bv
    @AdemarMorais-bv4bv 19 วันที่ผ่านมา

    Muito bom seu trabalho Rocketseat! Tenho um site de filmes em html e queria saber se tem como filtrar os vídeos, tenho uns 150 filmes: imagens títulos e links para cada vídeo. Estrutura: section>container>movies-slides> a.movie-item> o poster e título . . .

  • @weslleyprado8499
    @weslleyprado8499 5 หลายเดือนก่อน

    Porra Maicão cê é o cara, sempre tive muuuita dificuldade com JS e lógica, tava perdidinho não fazendo ideia em como estudar ou melhorar meu entendimento. Apliquei isso em um projeto pessoal e deu super certo, essa dica sobre voltar e fazer sozinho é sensacional, muito obrigado cara!!!

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

    mt interessante essa questão do font-size 62.5% pra facilitar trabalhar com rem!!

  • @luuysouza
    @luuysouza 9 หลายเดือนก่อน

    Nossa, funcionou muito bem pro projeto que eu estava desenvolvendo!! muito obrigado!

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

    Olha o has de novo hahah

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

    8:27 gostei disso, acabei de usar em um projeto meu :D

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

    Parece q leu minha mente. Era exatamente isso oq precisava no momento. Obrigada! ❤️

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

      Eu já tinha encontrado alguns videos q ensinavam basicamente a mesma coisa, mas esse é de longe uma das versão mais atualizadas e clean q eu achei.

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

    Rapaz tava pensando hoje em fazer isso pra dar uma incrementada no projeto da copa e vcs postam isso kkkkk vlw

  • @samueloliveira4465
    @samueloliveira4465 ปีที่แล้ว +8

    Maykão, onde você pega ideias para criar projetos como esse? Você me deu uma ideia, criar uma galeria de fotos onde você salva no banco imagens, aí depois pode apresentar em tela e buscar pela data de criação igual você fez no vídeo, em node e react.

    • @maykbrito
      @maykbrito ปีที่แล้ว +8

      Esse eu vi em algum vídeo do TH-cam mesmo. Mas eu sempre fico vendo canais, artigos no medium e no Dev.to, no git e Twitter tbm… sempre vão aparecendo ideias soltas.. daí a gente mistura um pouco aqui e outro ali e acaba saindo as ideias 💛

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

      @@maykbrito Muito massa, obrigado por tirar um tempinho para responder.

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

    Muito bom! Parabéns Rocketseat e Maicao .. fera demais

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

    Excelente ! Muito bem explicado ! ! Parabéns pelos vídeos ! ! !

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

    Ótimo conteúdo, um pequeno componente que faz toda a diferença, adorei!

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

    Mayk é brabo demais!

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

    Muito bom! Além de ajudar a melhorar a lógica, é algo que pode ser utilizado no dia a dia! Valeu Maykão!

  • @math-rosa
    @math-rosa ปีที่แล้ว

    Me ajudou muito. Fiquei feliz de conseguir aplicar ao meu código. Obrigado Mayk. Excelente conteúdo.

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

    S E N S A C I O N A L ! TUDO Muito bem explicado ! ! Parabéns pelos vídeos ! ! !

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

    Projetinho top demais

  • @geraldopcf
    @geraldopcf 10 หลายเดือนก่อน

    Muito show de bola, só queria deixar uma dica para evitar o uso de mais um else para mostrar todos os elementos quando não tem input:
    No lugar de if(filterElement.value != ' '){...} deixar apenas if(filterElement) {...} nesse caso ele vai aproveitar o else do for of que está dentro da condição if

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

    Muito Massa...

  • @guilbervieira
    @guilbervieira 7 หลายเดือนก่อน

    rocketset tem forma de pagamento mensal ?

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

    Consegui fazer só com as orientações, o código não ficou tão profissional quanto o do mayk, mas funcionou kkkkk

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

    Como ficou minha solução:
    const cards = document.querySelectorAll('.cards li');
    const filterInput = document.getElementById('filter');
    function hasWhiteSpace(text) {
    return /\s/g.test(text);
    }
    filterInput.addEventListener('input', () => {
    const filterText = filterInput.value.toLowerCase();
    if (hasWhiteSpace(filterText)) return;
    for (const card of cards) {
    let cardTitle = card.querySelector('h2');
    cardTitle = cardTitle.textContent.toLowerCase();
    if (cardTitle.includes(filterText)) {
    card.style.display = 'block';
    } else {
    card.style.display = 'none';
    }
    }
    });

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

    Esse Maykão eh tooop demais.
    Esquece copa do mundo....kkk

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

    Mano, top demais. Vou fazer. Obrigado demais aí.

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

    grande Mayk valeu

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

    Maneiro demais!!!

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

    Maykão god dms

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

    Alguém sabe dizer de quanto em quanto tempo abre a turma para o explore? Pretendo fazer próximo ano. No momento estou sem tempo.

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

    Mayk, sou iniciante e tenho dificuldade. Comecei a assistir vídeos de javascript para ver como as pessoas codam as coisas, como por exemplo: uma calculadora, um jogo da velha, um dark mode, um formulário e até mesmo esse sistema de filtro do vídeo, que aliás ficou excelente maykao! Você acha que é uma boa ideia eu primeiro assistir esses vídeos onde as pessoas codam pra que eu veja como é feito, e depois tentar reproduzir oque foi feito sozinho? Sem olhar no vídeo, sem nada?

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

      Fala Lucas! Tô vendo sua mensagem agora. Eu acho excelente você aprender assistindo como os outros fizeram. É uma maneira de você ir entendendo a lógica das coisas. Depois que vc entendeu olhando, é importante você fazer e forçar ao máximo não olhar. Mas, olhe quantas vezes forem necessárias até que você tenha capacidade de fazer sozinho. Isso leva tempo e prática. Assim como eu posso assistir as pessoas tocando alguma música, eu só vou saber tocar aquela música quando eu praticar muito. Ou, vendo um jogador fazendo uma jogada bonita, onde eu posso entender como ele fez, mas eu só vou saber fazer se eu praticar muito. Então, segue assistindo a fim de entender, depois, pratique muito a fim de aprender! Abração

  • @devtocruz6698
    @devtocruz6698 ปีที่แล้ว +8

    Me amarro em ver esses minis projetos simples e úteis 🤓

  • @foconomeufuturo515
    @foconomeufuturo515 10 หลายเดือนก่อน

    gente, não deu certo pra mim, meu código ta identico mas a parte de Js não funciona :(

    • @foconomeufuturo515
      @foconomeufuturo515 10 หลายเดือนก่อน

      Meu Js só rodou corretamente dentro do meu arquivo html. Vou sobreviver.

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

    Muito bom!!

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

    para fazer um loop qual seria a melhor opção? forEach? for of? tem diferença?

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

    Salve

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

    Cara, eu fiquei perdidinho na linha
    for(let card of cards) {
    }
    Tipo, nunca vi um for ser declarado dessa maneira, fui até no MDN pra vê algo semelhante, eu sou muito noob mesmo kkkk

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

    O link não tá funcionando, leva para arquivos em branco ;-;

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

    Cadê o link do projeto?

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

      Coloquei na descrição agora 😍

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

    kd o código inicial kkk

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

      Kkkk faltou eu enviar. Coloquei agora na descrição

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

      @@maykbrito muito obrigado! to aprendendo bastante no canal!

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

    show

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

    Lá ele

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

    const filterElement = document.querySelector('header input')
    const cards = document.querySelectorAll('.cards li')
    filterElement.addEventListener('input', filterCards)
    function filterCards(){
    if(filterElement.value != ''){
    for (let card of cards){
    let title = card.querySelector('h2')
    .innerText
    .toLowerCase()
    let filterText = filterElement.value.toLowerCase()
    if(!title.includes(filterText)){
    card.style.display = 'none'
    }
    }
    }else{
    for (let card of cards){
    card.style.display = 'block'
    }
    }
    }

  • @nelson.costa.dev2536
    @nelson.costa.dev2536 ปีที่แล้ว +1

    tava assistindo a copa e parei kakaka

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

    um tanto quanto parecido
    const input = document.querySelector('#filter');
    const cards = document.querySelectorAll('.cards li');
    input.addEventListener('input', filter_cards);
    function filter_cards(e) {
    const input_text = e.target.value;
    if(input_text) {
    cards.forEach((el) => {
    const title = el.querySelector('h2').innerText;
    const title_lowcase = title.toLocaleLowerCase();

    if(title_lowcase.includes(input_text) === false) {
    el.style.display = "none";
    console.log(el)
    }
    else {
    el.style.display = "block";
    }
    })
    }
    else {
    cards.forEach((el) => {
    el.style.display = "block";
    })
    }
    }

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

    Minha solução foi essa
    window.addEventListener('load', () => {
    const inputFilter = document?.querySelector('#filter')
    function handleFilterArticles(type) {
    const cards = document?.querySelectorAll('.cards li')
    const arrayCards = Array.from(cards)

    if(type !== "") {
    const filterCards = arrayCards.find((card) => card.childNodes[1].childNodes[3].innerHTML.toLowerCase() === type.currentTarget.value.toLowerCase().trim())
    if(filterCards) {
    arrayCards.forEach((card) => card.classList.add('hide'))
    filterCards.classList.remove('hide')
    }

    if(type.currentTarget.value === "") {
    arrayCards.forEach((card) => card.classList.remove('hide'))
    }
    }
    }

    inputFilter?.addEventListener('input', handleFilterArticles)

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

    Fiz dessa forma antes de ver o vídeo !
    let filter = document.querySelector('#filter');
    let cards = document.querySelectorAll('.cards li');
    addEventListener('keyup', () => {
    let value = filter.value;
    cards.forEach((element) => {
    let titleCards = element.children[0].textContent.trim().toLowerCase();
    if (value === '') {
    element.style.display = 'block';
    } else if (titleCards.includes(value)) {
    element.style.display = 'block';
    } else {
    element.style.display = 'none';
    }
    });
    });