Ir ao conteúdo

Javascript Como alterar valor do aria-expanded com javascript puro


Ir à solução Resolvido por GabrielSennaMs,

Posts recomendados

Postado

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

  • Solução
Postado

@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
Postado

@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

Postado

@EddK

 

  Em 01/10/2021 às 15:08, EddK disse:

Mas o id tem que ser único.

Expandir  

 

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
Postado

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

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!