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

[Dúvida] OnClick Null

O body do meu projeto está dessa forma:

<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>

E o arquivo JS está assim:

function tocaSomPom(){
    document.querySelector("#som_tecla_pom").play();
}
document.querySelector(".tecla tecla_pom").onclick = tocaSomPom;

Porém, ao eu executar a página HTML aparece esse Erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeO que eu poderia fazer para resolve-lo?

2 respostas
solução!

Olá Estevam, tudo bem?

O que ocorre é um erro de sintaxe dentro dos parâmetros do querySelector que está fora defunction tocaSomPom().

No código ".tecla tecla_pom", o espaço entre .tecla e tecla_pom, faz com que o querySelector vá até o seletor .tecla e busque um elemento filho que tem o tecla_pom como seletor e esse código não irá funcionar por dois motivos:

  1. Não existem nenhum elemento filho de .tecla com esse seletor.
  2. No querySelector, para que um seletor seja identificado como tal, é necessário que ele tenha o caractere que irá dizer se é um id(#) ou classe (.) etc.

Sendo assim, para buscar esse elemento que você deseja, passe como parâmetro ".tecla.tecla_pom" ou simplemente ".tecla_pom". Dessa forma:

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

Espero ter ajudado, em caso de dúvidas fique a vontade para perguntar. Abraços!

Muito obrigado, realmente me ajudou muito!