TransWikia.com

Quando eu coloco a classe na primeira ele funciona , mas na segunda (com a mesma classe) o efeito não funciona - JavaScript

Stack Overflow em Português Asked by Valdenirson PEREIRA on February 26, 2021

  • Quando eu clica-se em alguma dessas latas o background ia mudar de cor e a lata principal também :

    inserir a descrição da imagem aqui

  • Só que o background da segunda section não esta mudando de cor(E ela tem a mesma class) :
    inserir a descrição da imagem aqui

Obs : eu quero que a classe de cima fica com a mesma cor da classe debaixo.

  • HTML
<!--Primeira <section>  -->
<section class="corDeFundo">
    
</section>
<!-- Segunda <Section>-->
<section class="corDeFundo">
    <div class="produto" id="produto">
        <h1>produto</h1>
    </div>
</section>
  • JavaScript(Completo)

    const corDeFundo = document.querySelector(".corDeFundo")
      const latasDeRefri = document.querySelectorAll(".latasDeRefri li")
      const pepsiPrincipal = document.querySelector(".pepsi")
    
      latasDeRefri[0].addEventListener("click",()=>{
          pepsiPrincipal.src = "imagem/pepsi1.png"
          corDeFundo.style.background = "#004999"
          corDeFundo.style.transition = "0.5s"
      })
      latasDeRefri[1].addEventListener("click",()=>{
          pepsiPrincipal.src = "imagem/pepsi2.png"
          corDeFundo.style.background = "#ED0223"
          corDeFundo.style.transition = "0.5s"
      })
      latasDeRefri[2].addEventListener("click",()=>{
          pepsiPrincipal.src = "imagem/pepsi3.png"
          corDeFundo.style.background = "#191C1E"
          corDeFundo.style.transition = "0.5s"
      })
    

One Answer

Respondendo o ultimo comentário, precisa então usar o querySelectorAll, que retornar um array de objetos.

Precisa iterar sobre cada elemento, pode ser feito com for, foreach, etc. Eu costumo usar assim, é simples e claro:

const corDeFundo = document.querySelectorAll(".corDeFundo")

...

corDeFundo.forEach((elemento) => {
    elemento.style.background = "#191C1E"
    elemento.style.transition = "0.5s"
});

Ou assim também:

for (const elemento of corDeFundo) {
  elemento.style.background = "#191C1E"
  elemento.style.transition = "0.5s"
}

Porém esse for não é compatível com algumas versões mais antigas de navegador, convém confirmar: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of

Correct answer by Ricardo Pontual on February 26, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP