1
resposta

Minha solução usando ForEach, arrow function e método bind

let $ = document.querySelector.bind(document); let $$ = document.querySelectorAll.bind(document);

let tocaSom = seletorAudio => { const elemento = $(seletorAudio);

if (elemento && elemento.localName === 'audio') {
    elemento.play();
}else {
    console.log('Elemento não encotrado ou seletor inválido');
}

}

const listaDeTeclas = $$('.tecla');

listaDeTeclas.forEach((element, index) => {

const tecla = listaDeTeclas[index];
const instrumento = tecla.classList[1];

const idAudio = `#som_${instrumento}`;

tecla.onclick = () => tocaSom(idAudio);

tecla.onkeydown = event => {

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

}
tecla.onkeyup = () => tecla.classList.remove('ativa');

});

1 resposta

Olá, William.

Tudo bem?

Muito obrigado por compartilhar o seu código com a gente! Está top o importante é entender o código e funcionar! É muito bom ver você que está praticando e evoluindo, parabéns.

Precisar de ajuda manda aqui :)

Valeu!