1
resposta

Minha Solução

Boa tarde!

Sempre assisto os vídeos, praticando o conteúdo e quando sinto que já consigo resolver sozinho o problema, dou uma pausa nos vídeos e vou codificar. Noto que consigo grandes avanços em meu aprendizado, utilizando desta metodologia.

Vamos para a Solução:

Analisei a estrutura HTML do documento e notei que apesar dos botões utilizarem classe e os elementos audio utilizarem id, ambos compartilham de uma mesma informação, que no caso é o nome do som, exemplo:

<button class="tecla tecla_pom">Pom</button>
<audio src="sounds/keyq.wav" id="som_tecla_pom"></audio>

Esses dois elementos tem em comum a palavra "pom".

E esse padrão se estende aos outros elementos.

Então, capturei todos os elementos buttons de forma genérica, criando um list de buttons.

Após, percorri os elementos deste List, e adicionei em seu onclick a função "playSound", cujo objetivo é executar o play do elemento audio, levando em consideração a semelhança de nomes entre class e id.

Segue o código:


//Função para extrair apenas o nome do som que deverá ser tocado
function getOnlySoundName(classList){

    return soundName = classList[1].replace("tecla_", "");
}

//Função para tocar o som
function playSound(event){

    var sound = getOnlySoundName(event.currentTarget.classList);

    document.querySelector(`#som_tecla_${sound}`).play();
}

//Faz a atribuição da função de tocar o som para todos os botões do documento
function defineOnclickOfButtons(buttons){

    for (let index = 0; index < buttons.length; index++) {

        buttons[index].onclick = playSound;
    }    
}

//Capturando todos os botões do documento
var documentButtons = document.querySelectorAll("button");

defineOnclickOfButtons(documentButtons)
1 resposta

Oi Antonio, tudo certo?

Essa é uma boa dica de aprendizado! E com certeza esse seu tópico pode ajudar quem está com dificuldades. Parabéns por ter esse iniciativa, são pessoas com essa atitude que fazem com que o Fórum seja esse lugar incrível de trocas de conhecimento.

Parabéns e obrigada por compartilhar com a gente!

Continue os bons estudos.

Abraço.