Oi Ana,
Seu código apresenta alguns problemas.
Primeiro, todosBt é um NodeList, e você não pode usar addEventListener diretamente nele.
Você precisa iterar sobre cada elemento do NodeList e adicionar o addEventListener individualmente.
Segundo, a função alterarContexto está incompleta e com um erro de sintaxe.
Ela recebe apenas um argumento (contexto), mas tenta usar contexto como se fosse um iterador dentro do forEach.
Além disso, a variável musica na sua função de evento change não está definida; você provavelmente quis usar musicaFoco.
Aqui está uma versão corrigida do seu código:
const todosBt = document.querySelectorAll('.appCardButton');
const musicaFocoInput = document.querySelector('#alternar-musica');
const musicaFoco = new Audio('./sons/luna-rise-part-one.mp3');
musicaFoco.loop = true;
todosBt.forEach(botao => {
botao.addEventListener('click', () => {
alterarContexto('button');
botao.classList.add('active');
});
});
function alterarContexto(tipo) {
todosBt.forEach(botao => {
if (botao.type === tipo) {
botao.classList.remove('active');
}
});
}
musicaFocoInput.addEventListener('change', () => {
if (musicaFoco.paused) {
musicaFoco.play();
} else {
musicaFoco.pause();
}
});
Note as mudanças: a iteração com forEach para adicionar o addEventListener a cada botão, a correção da função alterarContexto para remover a classe active apenas dos botões do tipo especificado e a correção da variável musica para musicaFoco. 💻
Lembre-se de verificar se o seletor #alternar-musica e a classe appCardButton estão corretas no seu HTML. 😎
Para saber mais: Trabalhando com eventos em JavaScript. Este link da MDN explica como usar o addEventListener e outros métodos relacionados a eventos em JavaScript. 🎓
Persistência e prática são seus melhores aliados! 👍