const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; let interval = null; const screen = document.querySelector(".magic"), name = document.querySelector(".magic"); screen.onmouseenter = event => { let iteration = 0; clearInterval(interval); interval = setInterval(() => { name.innerText = name.innerText .split("") .map((letter, index) => { if(index < iteration) { return name.dataset.value[index]; } return letters[Math.floor(Math.random() * 26)] }) .join(""); if(iteration >= name.dataset.value.length){ clearInterval(interval); } iteration += 1 / 3; }, 30); }