1
resposta

Minha solução aplicando os conceitos do curso

No HTML, acrescentei o botão para esconder a lista, data-botao em cada um deles com os devidos atributos. Dessa forma, vou conseguir ter uma lista dos botões no JS. E na

  • adicionei o data-lista, que será manipulada no JS para chamar a estilização do CSS.
    <button data-botao="mostra">Mostra tintas em estoque:</button>
      <button data-botao="esconde">Oculta tintas em estoque:</button>
    
      <ul data-lista class="lista">
        <li cor="laranja" tipo="tinta-exterior" class="item">Tinta laranja</li>
        <li cor="vermelho" tipo="tinta-interior" class="item">Tinta vermelha</li>
        <li cor="branco" tipo="tinta-interior" class="item">Tinta branca</li>
        <li cor="amarelo" tipo="tinta-exterior" class="item">Tinta amarela</li>
        <li cor="rosa" tipo="tinta-exterior" class="item">Tinta rosa</li>
        <li cor="preto" tipo="tinta-exterior" class="item">Tinta preta</li>
      </ul>

    No CSS, adicionei essas linhas para quando o [data-lista] for "mostrar", a lista aparecer; e quando for "esconder", a lista sumir.

        [data-lista="mostrar"] {
        display: block;
        }
    
        [data-lista="esconder"] {
        display: none;
        }

    Segue o js:

    let lista = document.querySelector("ul"); // capturando a lista
    const botao = document.querySelectorAll("[data-botao]"); // capturando os botões
    
    botao.forEach(elemento => {
      elemento.addEventListener("click", (evento) => {
        operaLista(evento.target.dataset.botao);
        //event.target captura onde o evento ocorreu
        //.dataset.botao captura o atributo do elemento do botao
      })
    });
    
    function operaLista(operacao) {
      if (operacao === "mostra") {
        lista.setAttribute("data-lista", "mostrar"); // setAttribute altera o atributo do elemento (primeiro parâmetro), para o atributo passado (segundo parêmetro)
      } else{
        lista.setAttribute("data-lista", "esconder");
      }
    }
1 resposta

Olá Fernanda, tudo bem?

Pelo código que você postou, parece que você está no caminho certo! A adição dos atributos data-botao e data-lista no HTML é uma boa prática para identificar os elementos que serão manipulados no JavaScript. Além disso, a estilização no CSS para esconder e mostrar a lista também está correta.

No JavaScript, você capturou tanto a lista quanto os botões corretamente. E a função operaLista() está fazendo o que se espera, alterando o valor do atributo data-lista da lista de acordo com o botão clicado.

Continue praticando e testando o código para aprimorar seus conhecimentos em JavaScript e manipulação do DOM.

Um abraço e bons estudos.