Autor | Zpráva | ||
---|---|---|---|
dexter12 Profil * |
#1 · Zasláno: 2. 3. 2013, 01:26:40
Dobrý deň. Mám kód:
var k = 0; var f = function(p) { alert(p); } var timer = setInterval(f, 1000, k); k = 1; 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 |
#2 · Zasláno: 2. 3. 2013, 10:22:23
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 * |
#3 · Zasláno: 2. 3. 2013, 12:07:34
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 * |
#4 · Zasláno: 2. 3. 2013, 13:36:26
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); alert(p) - alert ti otvori jedno okno a to je vsetko. do setInterval si fakticky nepriradil ziadnu funkciu.
|
||
dexter12 Profil * |
#5 · Zasláno: 3. 3. 2013, 03:30:52
díki moc krát páni :)
|
||
Časová prodleva: 11 let
|
0