I've been following this youtube video https://www.youtube.com/watch?v=1-CvPn4AbT4 to build a mobile audio player with playlist to embed in a music website. At 1:12:16 I'm getting stuck with an error reading; Uncaught TypeError: Cannot read properties of null (reading 'addEventListener'). I ran it in a js validator and get; Functions declared within loops referencing an outer scoped variable may lead to confusing semantics. (liAudioTag). I've tried changing the name but no go. How can I fix this?
I am by no means an expert in javascript or app building but I'm trying my best to learn. Any help would be appreciated.
const ulTag = wrapper.querySelector("ul");//1:07:10
for (let i = 0; i < allMusic.length; i++) {
let liTag = `<li>
<div class="row">
<span>${allMusic[i].name}</span>
<p>${allMusic[i].artist}</p>
</div>
<audio class="${allMusic[i].src}" src="media/${allMusic[i].src}.mp3"></audio>
<span id="${allMusic[i].src}" class="audio-duration">3:40</span>
</li>`;
ulTag.insertAdjacentHTML("beforeend", liTag);//1:08:28
let liAudioDuaration = ulTag.querySelector(`#${allMusic[i].src}`);//1:10:34
let liAudioTag = ulTag.querySelector(`.${allMusic[i].src}`);//1:11:29
liAudioTag.addEventListener("loadeddata", ()=>{
let audioDuration = liAudioTag.duration;
let totalMin = Math.floor(audioDuration / 60);
let totalSec = Math.floor(audioDuration % 60);
if (totalSec < 10){//add 0 if sec less then 10
totalSec = `0${totalSec}`;
}
liAudioDuaration.innerText = `${totalMin}:${totalSec}`;
});
}