Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Utilização do Contador

Olá,

Acredito que seja uma dúvida simples, mas preciso perguntar kk, meu código está funcionando normal, mas minha dúvida é em relação a utilização do contador. O contador segue uma sequência que começa do 0 e via adicionando 1 até chegar na condição que < o tamanho da lista. Mas como o código funciona se no momento que vamos clicar nos botões para tocar o som, não precisamos seguir a ordem do primeiro botão ao último para o botão tocar o som certo?

O que eu entendi é que o uso do atributo onclick retorna do contador o número da posição do botão que clicamos e por isso não é necessário seguirmos a ordem crescente da lista para o botão tocar o som correto.

Espero que consiga entender a dúvida :)

2 respostas
solução!

Oi, Iuri! Tudo bem?

Para compreendermos o que está acontecendo inicialmente precisamos compreender a função do loop 'for' no nosso código e o que está de fato acontecendo dentro dele. Dessa maneira, segue abaixo o código comentado de forma que possamos entender a funcionalidade de cada linha de código:

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

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

// Este é um loop 'for' que percorre a lista de elementos com classe 'tecla'.
for (let contador = 0; contador < listaDeTeclas.length; contador++) {
    // Para cada elemento na lista:

    // Armazena o elemento atual em 'tecla'.
    const tecla = listaDeTeclas[contador];

    // Extrai o nome do instrumento associado à classe do botão.
    const instrumento = tecla.classList[1];

    // Cria um seletor único 'idAudio' para o elemento de áudio correspondente.
    const idAudio = `#som_${instrumento}`;

    // Define um evento 'onclick' para o botão atual.
    tecla.onclick = function () {
        // Quando o botão é clicado, essa função é executada:

        // Chama a função 'tocaSom' com o 'idAudio' específico deste botão.
        tocaSom(idAudio);
    }
}

Ou seja, o loop for percorre a lista de elementos com a classe .tecla, e para cada elemento na lista, ele extrai o nome do instrumento associado a ele, cria um seletor único para o elemento de áudio correspondente e atribui um evento de clique ao botão.

Dessa forma, quando o botão é clicado, o evento onclick acontece, executando assim a nossa função tocaSom, chamada com o idAudio específico da tecla clicada, permitindo que o som associado a essa tecla seja reproduzido. Isso permite clicar em qualquer botão em qualquer ordem para tocar os sons corretos.

Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓

Muito Obrigado, Sarah, ficou ótima a explanação.