Autor Zpráva
Rararach
Profil *
Zdravím a díky za pomoc.
Ne vždy se otevře poslední zaklinutý odkaz, proč? Myslím že není potřeba živou ukázku, protože v tom setTimeout(function() bude nějaká zákonitost kterou neznám ?

<a href="javascript:return false" onclick="jedna()">chci odkaz JEDNA</a><br><br>
<a href="javascript:return false" onclick="dva()">chci odkaz DVA</a><br><br>
<a href="javascript:return false" onclick="tri()">chci odkaz TRI</a>


<script>
var jednahref; var dvahref; var trihref;

function jedna(){
clearTimeout(dvahref); clearTimeout(trihref); 
jednahref = setTimeout(function(){window.location='jedna.htm';}, 4500);}

function dva(){
clearTimeout(jednahref); clearTimeout(trihref); 
dvahref = setTimeout(function(){window.location='dva.htm';}, 4600);}

function tri(){
clearTimeout(jednahref); clearTimeout(dvahref); 
trihref = setTimeout(function(){window.location='tri.htm';}, 4700);}

</script>
Radek9
Profil
Rararach:
Když dvakrát klikneš např. na jedna, tak ztrácíš referenci na ten první timeout a zároveň ho nikde neclearuješ. Proto pak nezáleží na tom, na co klikneš jako poslední. V tomhle případě tě to vždycky přesměruje na jedna. Proč radši neudělat jednu univerzální funkci s jedinou referencí na timeout?

var redirectTimeout;

function redirect(href, time) {
  clearInterval(redirectTimeout);
  
  redirectTimeout = setTimeout(function () {
    window.location = href;
  }, time);
}

<a href="javascript:void(0)" onclick="redirect('jedna.htm', 4500)">chci odkaz JEDNA</a><br><br>
<a href="javascript:void(0)" onclick="redirect('dva.htm', 4600)">chci odkaz DVA</a><br><br>
<a href="javascript:void(0)" onclick="redirect('tri.htm', 4700)">chci odkaz TRI</a>

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:

0