Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

O código parou de funcionar depois da mudança do laço while para o laço for!

Seguindo, passo a passo, as instruções da aula, o funcionamento estava perfeito quando o código estava assim:

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];
    const idAudio = `#som_${instrumento}`;

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

Mas, na hora de trocar o laço while pelo laço for, o código parou de funcionar. Os botões não tocam mais som nenhum, nem o console imprime o console.log(idAudio).

for (let contador = 0; contador < listaDeTeclas.lenght; contador++) {

    const tecla = listaDeTeclas[contador];
    const instrumento = tecla.classList[1];
    const idAudio = `#som_${instrumento}`; //template string

    console.log(idAudio)

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

}

Talvez eu só esteja com a vista cansada e deixei passar algum detalhe pequeno mas, a meu ver, depois de todas as correções que tentei fazer, o código ficou idêntico ao da instrutora. :v

1 resposta
solução!

Acabei eu mesmo encontrando meu erro! Acho que a gente fica, mesmo, meio burrinho quando passa muito tempo olhando pra mesma coisa, hahaha.

for (let contador = 0; contador < listaDeTeclas.lenght; contador++) {

O problema era, o tempo todo, o listaDeTeclas.length escrito errado.