1
resposta

alguem pode me explicar onde esta o erro do codigo

Ele não fica vermelho ao pressionar a tecla enter, como corrigir esse erro ? Não consigo dar a funcionalidade de clicar com o enter e ele ficar vermelho

function tocaSom(idElementoAudio) {
    document.querySelector(idElementoAudio).play();
}

const ListadeTeclas = document.querySelectorAll('.tecla');

//para
for (let contador = 0; contador < ListadeTeclas.length; contador++) {

    const tecla = ListadeTeclas[contador];
    const instrumento = tecla.classList[1];
    const idAudio = `#som_${instrumento}`; //template string

    tecla.onclick = function () {
        tocaSom(idAudio);
    }

    tecla.onkeydown = function (evento) {
        if (evento.code === 'Space' || evento.code === 'Enter') {
            tecla.classList.add('ativa');
        }
    }

    tecla.onkeyup = function () {
        tecla.classList.remove('ativa');
    }
}
1 resposta

Oi, Kevin, tudo bem?

A tecla "Enter" que faz parte do teclado numérico não foi definida para receber a classe ativa no código abaixo:

tecla.onkeydown = function (evento) {
    if (evento.code === 'Space' || evento.code === 'Enter') {
        tecla.classList.add('ativa');
    }
}

Por isso, ela emite o som, mas não recebe a estilização do CSS, para que ela funcione adequadamente, você pode usar o evento.codepara a tecla na posição específica do "Enter" do teclado numérico (NumpadEnter). O código ficaria assim:

tecla.onkeydown = function (evento) {
    if (evento.code === 'Space' || evento.code === 'Enter' || evento.code === 'NumpadEnter') {
        tecla.classList.add('ativa');
    }
}

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!