Autor Zpráva
dexter12
Profil *
Dobrý deň. Mám kód:
  var k = 0;
  var f = function(p)
  {
    alert(p);
  }
  var timer = setInterval(f, 1000, k);
  k = 1;
Definoval som časovač na funkciu f(0), ktorú spúšťam každú sekundu. Parameter k som fixne dosadil do funkcie, čím je časovač od premennej k nezávislý, takže k = 1 výsledok neovplivní - každú sekundu spúšťa alert(0).
Toto mi však nefunguje v IE. Nenašiel som žiadne rozumné riešenie fungujúce pre všetky prehliadače. Neviete prosím poradiť, ako predať fixné parametre funkcii pre setInterval, aby to bolo fungovalo aj v IE (verzia 9)? Vďaka.
Chamurappi
Profil
Reaguji na dextera12:
aby to bolo fungovalo aj v IE (verzia 9)?
Proč verze devět? Na uživatele starších kašleš?
Pokud vím, tak ve všech verzích Exploreru určuje třetí argument skriptovací jazyk. (Ačkoliv možná v desítce už by nemusel, když nepodporuje VBScript.)

Použij lexikální uzávěr.
dexter12
Profil *
Tak som použil lexikálny uzáver a skript spustí danú funkciu f pri deklarácii, ale ten setInterval nespustí.
var k = 0;
var f = (function(p){alert(p);})(k);
var timer = setInterval(f, 1000);
k = 1;
pako
Profil *
s alertom to bolo trochu obtazujuce, tak som ho zmenil na console.log.
co je ale dolezite - musis vracat funkciu. takto:
var k = 0;
var f = (function(p){return function() {console.log(p);};})(k);
var timer = setInterval(f, 1000);
tvoj povodny kod premennej f priradi alert(p) - alert ti otvori jedno okno a to je vsetko. do setInterval si fakticky nepriradil ziadnu funkciu.
dexter12
Profil *
díki moc krát páni :)

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: