Autor Zpráva
147477
Profil
Zdravím,

použil jsem tento funkční skript pro odpočítávání času:

<script type="text/javascript">
  var i = 15;
  setInterval("odpocet()", 1000); 
  odpocet();
 
  function odpocet() {
 
    if(i > 0) {
      var text;
 
      if((i < 5) && (i > 1)) {
        text = 'sekundy';
      }
      else if(i == 1)
      {
        text = 'sekunda';
      }
      else
      {
        text = 'sekund';
      }
 
      /*setTimeout("odpocet()", 1000);*/
      document.getElementById("cislo").innerHTML = 'Vyčkejte: ' + i + ' ' + text;
      i--;
    } else {
      document.getElementById("cislo").innerHTML = 'Vyčkejte: ' + i + ' sekund';
      document.getElementById("cislo").innerHTML = 'Zde je obsah, který se objeví po skončení odpočtu';
    }
  }
</script>
.............. 
<body onLoad="odpocet()">
.............. 
<span id="cislo"></span>

Problém tkví v tom, že do toho obsahu potřebuji dostat .swf animaci. To je samo o sobě snadné, do posledního document.getElementById("cislo").innerHTML = stačí místo 'Zde je obsah, který se objeví po skončení odpočtu' vložit příslušný <object>. Jenže komplikace spočívá v tom, že po skončení odpočtu se animace sice načte, ale každou sekundu začne od začátku a já nevím, jak to zastavit.

Poradťe prosím.

EDIT: Když místo řádku s obsahem nastrčím

window.clearInterval("cislo") = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ... </object>';

tak se podle očekávání nic nestane. :(
weroro
Profil
Zdravím,

namiesto setInterval("odpocet()", 1000); by som skúsil var odp = setInterval(odpocet, 1000); a potom by som to zrušil pomocou clearInterval(odp); samozrejme, že ten set interval ale presuň až za tú funkciu odpocet.
147477
Profil
Bohužel, nefunguje (asi jsem to špatně pochopil)...

var i = 200;
var odp = setInterval(odpocet, 1000); 
odpocet();
..............
document.getElementById("cislo").innerHTML = 'Vyčkejte: ' + i + ' sekund';
clearInterval(odp) = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ... </object>';
weroro
Profil
A takto?
<script type="text/javascript">
  var i = 15;
  var text, odp, content;
  
  function odpocet()
  {
      if (i > 0)
      {
          if (i == 1) text = 'sekunda';
          else if (i > 1 && i < 5) text = 'sekundy';
          else text = 'sekund';

          content = 'Vyčkejte: ' + i + ' ' + text;
          i--;
      }
      else
      {
          clearInterval(odp);
          content = 'Zde je obsah, který se objeví po skončení odpočtu';
      }
      document.getElementById("cislo").innerHTML = content;
  }

  function spustenie()
  {
      odpocet();
      odp = setInterval(odpocet, 1000);
  }
</script>

<body onLoad="spustenie()">

<span id="cislo"></span>
147477
Profil
Funguje - díky moc!
147477
Profil
Vyřešeno. Stačila drobná úprava kódu - ten níže už je v pořádku.

Řeším teď takovou lahůdku:

<script type="text/javascript">
  var i = 15;
  var text, odp, content;
  
  function odpocet()
  {
      if (i > 0)
      {
          if (i == 1) text = 'sekunda';
          else if (i > 1 && i < 5) text = 'sekundy';
          else text = 'sekund';
 
          content = 'Vyčkejte: ' + i + ' ' + text;
          i--;
      }
      else
      {
          clearInterval(odp);
          content = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ... </object>'; document.cookie = 'parametry';
      }
      document.getElementById("cislo").innerHTML = content;
  }
 
  function spustenie()
  {
      odpocet();
      odp = setInterval(odpocet, 1000);
  }
</script>

Po skončení odpočtu se velice správně založí nový cookie a zobrazí ona .swf animace. Jenže problém je v tom, že se zároveň na stránce nahlas zobrazí jeho parametry (viz skript), což je nežádoucí.

Nešly by nějak ukrýt? Děkuji.


Vyřešeno. Stačila drobná úprava kódu - ten výše už je v pořádku.

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: