Olá João, tudo bem com você?
Peço desculpa pela demora para responder o seu tópico.
Dando uma olhada no seu código percebi que a forma que você montou ele fez com que ao executá-lo, que no caso seria ao abrir a página, você estaria tocando todos os sons ao mesmo tempo.
Como forma de solução desenvolvi um código um pouco diferente que também utiliza a estrutura de repetição for
para passar todos os elementos da lista. Veja no exemplo abaixo:
var botoes = document.querySelectorAll(".tecla");
var audios = document.querySelectorAll("audio");
function tocaSom(i) {
audios[i].play();
}
for (let i = 0; i < botoes.length; i++) {
botoes[i].onclick = function () {
tocaSom(i);
}
}
Já no início dele estou criando duas listas, sendo elas dos botoes
e a dos audios
, com isso vou ter acesso a todos esses elementos e poder trabalhar com eles mais a frente no código.
Pulando a função tocaSom()
temos o nosso for
nele vou está percorrendo toda a minha lista de botões e a partir do click em determinado botão, vou passar qual é a posição da lista que esse botão foi clicado para a função tocaSom()
.
Agora sobre a função tocaSom()
, basicamente vou está recebendo a posição da lista do botão que foi clicado e adiciono essa posição para a minha lista de audios
, para que ela seja reproduzida na mesma posição. Isso dá certo porque a sequência de elementos nos botões e áudios são as mesmas nas listas.
Espero que eu tenha lhe ajudado, caso ainda tenha dúvidas ou problemas relacionados com esse tópico, estarei a sua disposição. Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.