Autor Zpráva
LukeZzZ
Profil
Zdravím,

rád bych požádal o pomoc s jedním krátkým JS.

Mám následující kód:
<script>
var num = 0;
 
function changepic() {
  num++; if (num > 3) {num = 1}
  document.images['hlavicka'].src = 'slide' + num + '.png';
  setTimeout("changepic()",2500);
}
</script>

<a href="#" onmouseover="changepic();" onmouseout="stopchange();"><img id="hlavicka" name="hlavicka" src="slide1.png"></a>

Po najetí myši se mi začnou v pořádku měnit fotografie, ale nemohu přijít na funkci, která by mi následně to zastavila po odjetí myši... zkoušel jsem break; a hledal i jiné věci, ale nějak nemohu na nic přijít... chtěl jsem například nastavit interval na delší, aby to neproběhlo, ale nějak na to nemohu najít...

Mohl bych požádat o radu, jak by měla ideálně vypadat funkce STOPCHANGE();

Za každou radu předem děkuji.

Lukáš
Radek9
Profil
LukeZzZ:
1) Do setTimeout předávej přímo funkci, ne string.
2) Ukládej si ten timeout do nějaké proměnné a při mouseout ho clearni.
var num = 0, timeout;
 
function changepic() {
  num = num % 3 + 1;
  document.images.hlavicka.src = 'slide' + num + '.png';
  timeout = setTimeout(changepic, 2500);
}

function stopchange() {
  timeout && clearTimeout(timeout);
}
LukeZzZ
Profil
Díky moc... funguje to perfektně...

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: