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

[Dúvida] A algum problema no idElementoAudio

os sons não são executados e no inspecionar aparece tal erro (Uncaught DOMException: Failed to execute 'querySelector' on 'Document': '[object PointerEvent]' is not a valid selector.)

Nesta linha -

document.querySelector(idElementoAudio).play();

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

let contador= 0;

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

while (contador <listaDeTeclas.length) {
    const tecla = listaDeTeclas[contador];
    const instrumento= tecla.classList[1];
    const idAudio = `#som_${instrumento}`;

    tecla.onclick = function () {
        tocaSom(idAudio);
    }
    console.log(idAudio)
    listaDeTeclas[contador].onclick= tocaSom;
    contador=contador+1;
    console.log(contador);
}
2 respostas

Olá Sabrina, tudo bem?

O erro "Uncaught DOMException: Failed to execute 'querySelector' on 'Document': [object PointerEvent] is not a valid selector" ocorre devido a um problema na chamada da função querySelector dentro da função tocaSom.

Ao passar o parâmetro idElementoAudio para a função querySelector, o valor estava sendo recebido como um objeto do tipo PointerEvent, em vez de uma string contendo o seletor do elemento de áudio desejado. Por isso, o querySelector não consegue encontrar o elemento correto e gerava o erro.

Sendo assim seu código refatorado fica assim:

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

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

listaDeTeclas.forEach((tecla) => {
  const instrumento = tecla.classList[1];
  const idAudio = `#som_${instrumento}`;

  tecla.onclick = () => {
    tocaSom(idAudio);
  };

  console.log(idAudio);
});

Para corrigir esse problema, foi adicionada uma linha extra dentro da função tocaSom para obter corretamente o elemento de áudio com base no seletor idElementoAudio.

Espero ter ajudado, qualquer dúvida, me coloco à disposição! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!
solução!

Olá Vitor, bom dia

acredito que achei meu erro, eu não tinha excluido a linha

listaDeTeclas[contador].onclick= tocaSom;

do código, obrigada