Ir ao conteúdo
  • Cadastre-se

Javascript Como alterar valor do aria-expanded com javascript puro


EddK
Ir à solução Resolvido por GabrielSennaMs,

Posts recomendados

Bom dia!

Preciso alterar o valor do aria-expanded="false" para aria-expanded="true" em botões de accordion quando expandidos. E ao clicar novamente para esconder o texto volte para aria-expanded="false" (usando apenas JavaScript Puro).

 

Alguém pode me ajudar?

 

Desde já muito obrigado

Link para o comentário
Compartilhar em outros sites

  • Solução

@EddK Bom isso aqui deve servir

 

<button type="button" id="btn" aria-expanded="false">
    teste
</button>
<script>
document.querySelector("#btn").addEventListener("click", function(event)
{
    let value = event.target.getAttribute("aria-expanded");

    event.target.setAttribute("aria-expanded", (value == "true") ? "false" : "true");
});
 </script>

 

Agora você deve modificar o seletor para o seu botão no caso eu usei ID como o meu seletor

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@EddK Nesse caso você precisa usar querySelectorAll

 

HTML:

<button type="button" id="btn" aria-expanded="false">
    teste1
</button>

<button type="button" id="btn" aria-expanded="false">
    teste2
</button>

<button type="button" id="btn" aria-expanded="false">
    teste3
</button>

<button type="button" id="btn" aria-expanded="false">
    teste4
</button>

 

 

JS:

document.querySelectorAll("#btn").forEach((elems) => {
  elems.addEventListener("click", (event) => {
    const { target } = event
    const value = target.getAttribute("aria-expanded")
    target.setAttribute("aria-expanded", value === "true" ? "false" : "true")
  })
})

 

Demo Online: https://codepen.io/ruiguilherme/pen/LYLagGR?editors=1010

Link para o comentário
Compartilhar em outros sites

@EddK

 

2 horas atrás, EddK disse:

Mas o id tem que ser único.

 

Realmente, nesse caso você pode trocar por um seletor diferente.

 

<button type="button" class="btn" aria-expanded="false">
    teste1
</button>

<button type="button" class="btn" aria-expanded="false">
    teste2
</button>

// ou

<button type="button" data-action="btn" aria-expanded="false">
    teste1
</button>

<button type="button" data-action="btn" aria-expanded="false">
    teste2
</button>

 

No js

document.querySelectorAll(".btn");

// OU

document.querySelectorAll('[data-action="btn"]');

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Exatamente, basta alterar o seletor... JavaScript desde da versão ES6 usa os mesmo seletores do CSS, recomendo as seguintes leituras para conseguir lidar sozinho com problemas semelhantes no futuro:

 

https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors

https://developer.mozilla.org/en-US/docs/Web/API/Document_object_model/Locating_DOM_elements_using_selectors

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!