2
respostas

[Bug] botão Tom ficando vermelho

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

// funcao que toca o som
function tocaSom (idElementAudio) {
    document.querySelector(idElementAudio).play();
}

// NideList com objetos de botões
const teclas = document.querySelectorAll('.tecla')

for (botao of teclas) {
    // string com o nome da classe do botão, ex 'tecla_pom'
    const instrumento = botao.classList[1];
    botao.onclick  = function () {
        // associando o som ao botão, ex 'som_tecla_pom'
        tocaSom(`#som_${instrumento}`)
    }           

    botao.onkeydown = function () {
        botao.classList.add('ativa');
    }

    botao.onkeyup = function () {
        botao.classList.remove('ativa');
    }
}                                                               

Olá, estou com o seguinte problema: a tecla Tom fica vermelha ao pressionar barra de espaço ou enter, mesmo que o foco não esteja nela, inclusiver me parece que a classe 'ativa' é adicionada sempre a Tom, mas mesmo assim as outras teclas ficam vermelhas quando pressionadas, não entendo o motivo

2 respostas

Encontrei o problema:

...
for (let botao of teclas) {
...

É necessario usar o let, pois o var deixava o último botão da iteração salvo, que no caso era o Tom, então sempre ele era chamado também, correto? mas mesmo assim gostaria se saber mais sobre isso, se alguém mais experiente puder acrescentar informações, eu agradeço

Olá, Nasser. Como vai?

Parabéns por identificar o problema e encontrar a solução sozinho! Isso demonstra autonomia e um ótimo raciocínio lógico, qualidades essenciais para um desenvolvedor.

Continue explorando essas nuances do JavaScript! Conte sempre com o Fórum para aprimorar seus conhecimentos.

Abraços e bons estudos!