Quiero hacer que un elemento ejecute una función continuamente mientras muevo el mouse y dejar de ejecutarla cuando alejo el mouse de él, pero en este momento solo puedo comenzar y no tengo idea de cómo detenerlo.
HTML:
<a onmouseover="randomizeHover(1)" id="link1" class="link" href="#">Home</a>JS:
function randomize(id) { let element = document.getElementById("link" + id); element.innerHTML = "Ho" + makeid(2); } //generates random letters function makeid(length) { var result = ""; var characters = "abcdefghijklmnopqrstuvwxyz"; var charactersLength = characters.length; for (var i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } //makes it repeat itself function randomizeHover(id) { console.log("Hello?"); setInterval(() => { randomize(id); }, 200); }Agregue un detector de eventos mouseleave que borre el intervalo:
function randomize(id) { let element = document.getElementById("link" + id); element.innerHTML = "Ho" + makeid(2); } //generates random letters function makeid(length) { var result = ""; var characters = "abcdefghijklmnopqrstuvwxyz"; var charactersLength = characters.length; for (var i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } //makes it repeat itself let interval; function randomizeHover(id) { console.log("Hello?"); interval = setInterval(() => { randomize(id); }, 200); } function stopRandomizer(){ clearInterval(interval) } <a onmouseover="randomizeHover(1)" onmouseleave="stopRandomizer()" id="link1" class="link" href="#">Home</a>