está aparecendo o seguinte erro no console e os sons não estão reproduzindo:
Uncaught TypeError: Cannot read properties of null (reading 'play') at tocaSom (main.js:4:44) at HTMLButtonElement.tecla.onclick (main.js:29:9)
meu main.js
//
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 = contador + 1;
}
index.html
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/estilos.css">
<link rel="stylesheet" href="css/reset.css">
<link rel="shortcut icon" href="images/bateria.png" type="image/x-icon">
<title>Mindi</title>
</head>
<body class="fundo">
<h2 class="titulo">Alura Midi</h2>
<section class="teclado">
<button class="tecla pom" >Pom</button>
<button class="tecla clap" >Clap</button>
<button class="tecla tim">Tim</button>
<button class="tecla puff">Puff</button>
<button class="tecla splash">Splash</button>
<button class="tecla toim">Toim</button>
<button class="tecla psh">Psh</button>
<button class="tecla tic">Tic</button>
<button class="tecla tom">Tom</button>
</section>
<audio src="sounds/keyq.wav" id="som_tecla_pom"></audio>
<audio src="sounds/keyw.wav" id="som_tecla_clap"></audio>
<audio src="sounds/keye.wav" id="som_tecla_tim"></audio>
<audio src="sounds/keya.wav" id="som_tecla_puff"></audio>
<audio src="sounds/keys.wav" id="som_tecla_splash"></audio>
<audio src="sounds/keyd.wav" id="som_tecla_toim"></audio>
<audio src="sounds/keyz.wav" id="som_tecla_psh"></audio>
<audio src="sounds/keyx.wav" id="som_tecla_tic"></audio>
<audio src="sounds/keyc.wav" id="som_tecla_tom"></audio>
<script src="main.js"></script>
</body>
</html>