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

[Bug] O som não toca, mas quando chamo a função inline funciona perfeitamente

Acho que não tem nenhum erro no código, mas mesmo assim, o som não reproduz com o click. Mas quando eu chamo a função inline, ela funciona direitinho.

JS

function tocaSomPom() {
  document.querySelector('#som_tecla_pom').play();
}

// function tocaSomClap() {
//     document.querySelector('#som_tecla_clap').play();
// }

  document.querySelector('.tecla_pom').onClick = tocaSomPom;

HTML

<!DOCTYPE html>
<html lang="pt-BR">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Alura MIDI</title>

    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600&display=swap" rel="stylesheet">

    <link rel="icon" type="image/png" href="images/bateria.png">
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/estilos.css">

</head>

<body>

    <h1>Alura Midi</h1>

    <section class="teclado">
        <button class="tecla tecla_pom">Pom</button>
        <button class="tecla tecla_clap">Clap</button>
        <button class="tecla tecla_tim">Tim</button>

        <button class="tecla tecla_puff">Puff</button>
        <button class="tecla tecla_splash">Splash</button>
        <button class="tecla tecla_toim">Toim</button>

        <button class="tecla tecla_psh">Psh</button>
        <button class="tecla tecla_tic">Tic</button>
        <button class="tecla tecla_tom">Tom</button>
    </section>

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

    <script src="main.js"></script>
</body>

</html>

No console do DevTools, aparece a seguinte mensagem: "DevTools failed to load source map: Could not load content for chrome-extension://gighmmpiobklfepjocnamgkkbiglidom/browser-polyfill.js.map: System error: net::ERR_FILE_NOT_FOUND", mas não acho que tenha relação com o problema.

3 respostas
solução!

Olá Poema, tudo bem?

Pelo que pude perceber no seu código, o problema está na forma como você está adicionando o evento de "onclick", o erro está na palavra. Ao invés de usar "onClick" com o "C" maiúsculo, você deve usar a palavra "onclick" tudo minúsculo.

CORRIGIDO FICA:

document.querySelector('.tecla_pom').onclick = tocaSomPom;

Espero ter ajudado e bons estudos!

Funcionou sim, obrigada! Não acredito que era só isso KK

kkk Mas é normal, pois quando chamamos o "onClick" direto no HTML ai é com a letra "C" no maiúsculo, por isso confunde mesmo. Mas que bom que deu certo. Fico feliz em ajudar. Valeu.