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

Uncaught Reference Error: "tecla" is not defined

Alguém pode me ajudar com esse erro de referência? Diz que tecla não tem definição, porém já declarei ela como uma const.

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

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

let contador = 0;

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

    const tecla = listaDeTeclas[contador];

    const instrumento = tecla.classList[1];

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

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

listaDeTeclas [contador].onclick = function () {
        tocaSom (idAudio);
    }

            // Interação com o teclado ↓
    tecla.onkeydown = function (evento) {

        console.log (evento.code == 'Space')

       if(evento.code === 'Space') {
        tecla.classList.add('ativa');
    }

    tecla.onkeyup = function () {

        tecla.classList.remove('ativa');
    }

}
2 respostas
solução!

Olá, André.

Tudo bem?

Isso acontece porque você está chamando o código tecla.onclick fora do for sendo que tem que ser dentro do for, veja:

Seu código está assim:

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

    const tecla = listaDeTeclas[contador];

    const instrumento = tecla.classList[1];

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

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

CORRIGIDO:

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

    const tecla = listaDeTeclas[contador];

    const instrumento = tecla.classList[1];

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

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

Espero ter ajudado. Qualquer dúvida manda aqui. Valeu.

Obrigado! Não tinha notado.