3
respostas

O console diz que não consegue ler propriedades nulas, e não sai som nenhum

function tocaSom(idElementoAudio) {

document.querySelector(idElementoAudio).play();

}

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

let contador = 0;

while(contador < listaDeTeclas.length) { const tecla = listaDeTeclas[contador]; const instrumento = tecla.classList[1];

// template string 
const idAudio = `#som_ ${instrumento}`;
console.log(idAudio);

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

contador = contador + 1; 
console.log(contador);

}

3 respostas

Isa, boa noite.

Segue meu script:

const teclado = document.querySelectorAll('.tecla'); let i = 0;

while(i < teclado.length){ const som = teclado[i].classList[1]; teclado[i].onclick = ()=>{ tocar(som_${som}) } i++ }

function tocar(id){ document.getElementById(id).play() }

const idAudio = `#som_ ${instrumento}`;

Na hora de declarar a const idAudio, tem um espaço em branco após o som_, verifica se não é por isso que ele não encontra o elemento.

Caio, bom dia. Tudo bem?

Cara, posta o código completo aqui, mas pelo que vi na sintaxe que enviou está faltando as aspas ou apóstrofos:

const som = #som_${[instrumento]};

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software