Quero o seguinte: Tenho uma lista de ícones, todas possuem a mesma classe que é "icon-visual", e classes específicas para cada item, como o "icon-financeiro" e o "icon-mensalidade". Quando clicar em um ícone, este vai receber uma classe, onde vai ser alterado a cor do background dele. Por exemplo, cliquei no "icon-financeiro", quero que ele ganhe a classe "icone-selecionado" ficando com o background roxo. Se em seguida eu clicar no outro, "icon-mensalidade", quero que ele receba a classe, e que a classe seja removida do ícone anterior.
Porém está me dando erro ao adicionar a classe: Uncaught TypeError: Cannot read property 'add' of undefined at HTMLDivElement.OutroRecurso (outros-recursos.js:29)
Tenho o seguinte JS:
window.onload = function() {
var Icones = document.querySelectorAll(".icon-visual");
for (var i=0; i<Icones.length; i++) {
var Icon = Icones[i];
Icon.addEventListener("click", OutroRecurso);
}
}
function OutroRecurso(Icon) {
Icon.classList.add("icone-selecionado");
}
E o HTML é este:
<div class="plan-card-basic cards-flex">
<div class="plan-card-icons">
<div class="icon-financeiro icon-visual">
<i class="icofont-exchange"></i>
</div>
<div class="icon-mensalidade icon-visual">
<i class="icofont-money-bag"></i>
</div>
<div class="icon-usuarios icon-visual">
<i class="icofont-user-alt-7"></i>
</div>
<div class="icon-ind-movimento icon-visual">
<i class="icofont-chart-growth"></i>
</div>
<div class="icon-ind-luta icon-visual teste-icone">
<i class="icofont-chart-bar-graph"></i>
</div>
</div>
- Se eu fizer o processo, selecionando apenas 1 classe de 1 ícone específico e adicionar a outra classe nele, o processo ocorre bem certinho.
- Se eu fizer o processo como no código acima, e invés de adicionar classe, dar um console.log, também dá certo, sem erros.
Mas desta forma não está dando certo.
Alguém pode me ajudar?