1
resposta

[Projeto] O meu só funcionou após fazer uma modificação

Quando eu fiz igual ao da instrutora, saia o som somente de um instrumento em específico, independente de qual tecla eu clicava. Apenas quando eu deixei as variáveis de instrumento e áudio dentro da função anônima que deu certo.

Abaixo segue como o meu funcionou:

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

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

var contador = 0

while (contador < listaDeTeclas.length ){
    const tecla = listaDeTeclas[contador];
    tecla.onclick = function(){

        var instrumento = tecla.classList[1];
        var audio = `#som_${instrumento}`
        tocaSom(audio)
    };
    contador++    
}

Aqui era como fiz igual ao da instrutora:

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

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

var contador = 0

while (contador < listaDeTeclas.length ){
    const tecla = listaDeTeclas[contador];
    var instrumento = tecla.classList[1];
    var audio = `#som_${instrumento}`;
    tecla.onclick = function(){
        tocaSom(audio)
    };
    contador++    
}

Por favor, alguém sabe identificar se fiz algo errado?

1 resposta

Opa Danilo, tudo bem?

No caso o código disponibilizado por você não está funcionando por conta da declaração das variáveis, no curso são utilizadas variáveis constantes (const) e não variáveis globais (var).

Ao utilizar o código fornecido apenas o último som é tocado, por conta disso o uso de variáveis constantes é necessário para que o escopo não afete todo o código. Caso queira aprender mais sobre as variáveis e seus funcionamentos deixo abaixo uma artigo bem interessante sobre:

Se precisar de ajuda ou tiver alguma dúvida, estou à disposição, conte comigo!

Um bom dia e bons estudos

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓