2
respostas

Alura MIDI : Identifier 'listaDeTeclas' has already been declared

Está dando um erro que o 'listaDeTeclas' já foi declarado ( const no caso ) porém não repeti uma const com esse mesmo nome Segue meu codigo : Ps: se puderem me ajudar achar o erro agradeço :)

function tocaSom(idSomTecla) { document.querySelector(idSomTecla).play(); } //document.querySelector('.tecla_pom').onclick = tocaPom;

const listaDeTeclas = document.querySelectorAll('.tecla'); let contador = 0; while (contador < listaDeTeclas.length) { const tecla = listaDeTeclas[contador]; const instrumento = tecla.classList[1]; console.log(idAudio); /*Template string */ const idAudio = som${instrumento}; tecla.onclick = function () { tocaSom(idAudio) }; contador = contador + 1; console.log(contador); }

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Boa noite Mateus,

Estive dando uma olhada no seu problema e para que eu possa dizer com mais certeza qual é exatamente o erro seria necessário o código html que este arquivo main.js está interagindo. Mas como eu já realizei esse curso da criação do alura midi utilizei o arquivo html que tenho aqui.

Aparentemente o único erro que encontrei foi que na linha 11 da sua captura de tela, há um console.log(idAudio) mas a constante idAudio só foi declarada na linha 13. Após mover o console.log para uma linha abaixo da declaração do idAudio o código funcionou normalmente:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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);
}

Dica: Quando for colar um trecho que código aqui no fórum utilize o botão "inserir bloco de código" ou pressione Ctrl+Alt+C

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

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


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

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

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

}

O Erro fiz modificaçoes, mas o erro continua : Uncaught SyntaxError: Identifier 'listaDeTeclas' has already been declared (at main.js:1:1)