1
resposta

Tentei de outra forma e não funciona

HTML

<audio src="sounds/keyq.wav" class="som som_tecla_pom"></audio>
<audio src="sounds/keyw.wav" class="som som_tecla_clap"></audio>
<audio src="sounds/keye.wav" class="som som_tecla_tim"></audio>
<audio src="sounds/keya.wav" class="som som_tecla_puff"></audio>
<audio src="sounds/keys.wav" class="som som_tecla_splash"></audio>
<audio src="sounds/keyd.wav" class="som som_tecla_toim"></audio>
<audio src="sounds/keyz.wav" class="som som_tecla_psh"></audio>
<audio src="sounds/keyx.wav" class="som som_tecla_tic"></audio>
<audio src="sounds/keyc.wav" class="som som_tecla_tom"></audio>

JS:
const teclas = document.querySelectorAll('.tecla');
const sons = document.querySelectorAll('.som');

let i=0;
while(i<teclas.length){
teclas[i].onclick = function (){
    sons[i].play();
};

i++;

}

Tirei as id's dos áudios e mudei para class para que eu pudesse seguir a mesma lógica das teclas. Por que não funciona dessa forma?

1 resposta

Olá Izabelle, tudo bem?

Peço desculpa pela demora para responder o seu tópico.

Poderia por gentileza compartilhar conosco mais informações sobre o problema? Quando diz que não funciona, aparece alguma mensagem de erro? Nenhum som toca? Caso for possível peço que compartilhe seu projeto completo conosco pelo github ou os arquivos upados no drive. Dessa forma poderei te auxiliar de forma mais assertiva.

Ademais, precisamos considerar a limitação do while, ele realiza tudo o que há dentro depois checa essa condição, logo o que pode estar acontecendo é que, o valor do seu i que está sendo passado para a função tocaSom() é apenas o último valor, que no caso seria 9.

Você pode visualizar isso usando um console.log(i) dentro da função tocaSom(), ao fazer isso no console do navegador você pode visualizar o valor que está sendo passado. Logo recomendo testar utilizando a estrutura de repetição for.

Caso não haja resolução com isso, por favor, avise-me para que eu possa ajudar de outra forma.

Tenha um bom dia e bons estudos.