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

[Projeto] Usando o onClick para tocar os sons

Imagino que não seja a forma mais otimizada de se fazer, mas testei usar o onClick que vimos na primeira aula para disparar o alert, mas dessa vez pra chamar a função. Aproveitei para fazer de todos os sons.

HTML

<section class="teclado">
        <button onclick="pom()" class="tecla tecla_pom">Pom</button>
        <button onclick="clap()" class="tecla tecla_clap">Clap</button>
        <button onclick="tim()" class="tecla tecla_tim">Tim</button>

        <button onclick="puff()" class="tecla tecla_puff">Puff</button>
        <button onclick="splash()" class="tecla tecla_splash">Splash</button>
        <button onclick="toim()" class="tecla tecla_toim">Toim</button>

        <button onclick="psh()" class="tecla tecla_psh">Psh</button>
        <button onclick="tic()" class="tecla tecla_tic">Tic</button>
        <button onclick="tom()" class="tecla tecla_tom">Tom</button>
    </section>

JavaScript

function pom() {
    document.querySelector('#som_tecla_pom').play();
}
function clap() {
    document.querySelector('#som_tecla_clap').play();
}
function tim() {
    document.querySelector('#som_tecla_tim').play();
}
function puff() {
    document.querySelector('#som_tecla_puff').play();
}
function splash() {
    document.querySelector('#som_tecla_splash').play();
}
function toim() {
    document.querySelector('#som_tecla_toim').play();
}
function psh() {
    document.querySelector('#som_tecla_psh').play();
}
function tic() {
    document.querySelector('#som_tecla_tic').play();
}
function tom() {
    document.querySelector('#som_tecla_tom').play();
}
2 respostas
solução!

Bom dia, seu código nao esta errado porem no futuro voce poderá fica um pouco confuso ao dar manutenção, entao vamos reduzi-lo:

o que eu notei voce chama as msm function de varias maneiras em vez de passa o parametro dentro dela ('Exemplo')

html poderia ser assim

<button onclick="playSound('pom')" class="tecla tecla_pom">Pom</button>
<button onclick="playSound('clap')" class="tecla tecla_clap">Clap</button>
<button onclick="playSound('tim')" class="tecla tecla_tim">Tim</button>

<button onclick="playSound('puff')" class="tecla tecla_puff">Puff</button>
<button onclick="playSound('splash')" class="tecla tecla_splash">Splash</button>
<button onclick="playSound('toim')" class="tecla tecla_toim">Toim</button>

<button onclick="playSound('psh')" class="tecla tecla_psh">Psh</button>
<button onclick="playSound('tic')" class="tecla tecla_tic">Tic</button>
<button onclick="playSound('tom')" class="tecla tecla_tom">Tom</button>

e o seu script js ficaria assim

function playSound(soundId) {
    document.querySelector(`#som_tecla_${soundId}`).play();
}

${isso se torna o nome do campos que esta sendo passado ao chama a function}

Qualquer duvida pode me chama no LinkedIn: luan

Muito obrigado pelo feedback Luan, a solução que você trouxe realmente é mais simples de entender e custa bem menos linhas de código!!