Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 26. 6. 2014, 00:41:54
Mám ve scriptu něco takovýho:
(function(){var i = document.getElementById("element"), v = i.checked; setInterval(function(){if(i.checked !== v){ v = i.checked; if(v) sessionStorage.element = "on"; else sessionStorage.element = "off";}}, 50)})(); Jenže tohle tam mám vícekrát pro více elementů. A v některých případech nebudu všechny ty elementy vypisovat, ale jen některý. Takže ten javascript bude házet chybu: Nelze načíst vlastnost checked nedefinovaného nebo nulového odkazu Vadí to moc? Nezastaví to celý script? Musím to nějak dávat do podmínky? Třeba takhle: if (document.getElementById("element")) { (function(){var i = document.getElementById("element"), v = i.checked; setInterval(function(){if(i.checked !== v){ v = i.checked; if(v) sessionStorage.element = "on"; else sessionStorage.element = "off";}}, 50)})(); } Je to tak ok? |
||
Chamurappi Profil |
#2 · Zasláno: 26. 6. 2014, 01:44:54
Reaguji na quatzaela:
„Nezastaví to celý script?“ Zastaví. A každých 50 milisekund ti to připíše do konzole chybu. „Musím to nějak dávat do podmínky? Třeba takhle“ Proč tak složitě? Proč prostě dovnitř té funkce nedáš if(!i) return; ?
Moc nerozumím, proč se má každých 50 milisekund zkoumat zaškrtnutí. Proč nestačí uložit stav při změně? Tedy při onclick u?
|
||
quatzael Profil |
#3 · Zasláno: 26. 6. 2014, 11:15:39
Chamurappi:
„Proč prostě dovnitř té funkce nedáš if(!i) return;?“ Kam dovnitř? Hned na začátek? „Moc nerozumím, proč se má každých 50 milisekund zkoumat zaškrtnutí. Proč nestačí uložit stav při změně? Tedy při onclicku?“ Normálně by asi stačilo i jen onchange. Mám tam ajax. Je tam tlačítko, aby se načetly původní hodnoty z profilu. Nevím jestli by tady nestačilo to onchange. Ale jsou tam věci v tom formuláři, u kterých by to onchange určitě nestačilo. Už si nějak nepamatuju, proč jsem dával ten setInterval na všechny položky formuláře.. Někde jsem to tady řešil, ale už to vlákno nemůžu najít.. |
||
Chamurappi Profil |
#4 · Zasláno: 26. 6. 2014, 11:24:13
Reaguji na quatzaela:
„Hned na začátek?“ Tam, kde už je naplněná proměnná i , ale ještě se z ní nezkoušelo vytáhnout checked .
„Normálně by asi stačilo i jen onchange.“ Raději onclick , ten reaguje hned.
„Mám tam ajax.“ Nesouvisí. „Je tam tlačítko, aby se načetly původní hodnoty z profilu.“ Tedy <input type="reset"> ? Nesouvisí.
„jsou tam věci v tom formuláři, u kterých by to onchange určitě nestačilo“ Pochybuji. |
||
quatzael Profil |
Chamurappi:
„Tam, kde už je naplněná proměnná i, ale ještě se z ní nezkoušelo vytáhnout checked.“ Takže tady??: (function(){var i = document.getElementById("element"), if(!i) return; v = i.checked; ... „Mám tam ajax.“ Nesouvisí. „Je tam tlačítko, aby se načetly původní hodnoty z profilu.“ Tedy <input type="reset">? Nesouvisí. Žádný reset tam není, ale naopak dost sofistikovaný tlačítko, při kterým, když na něj uživatel klikne, se ajaxem spustí PHP script, který načte data z databáze podle aktuálního nastavení, které si uživatel zvolil, a javascript těmito daty potom vyplní formulář i s těmi animacemi fadeout u borderů inputů (který jsem už tady někde řešil) , aby bylo vidět který inputy se aktualizovaly. |
||
Chamurappi Profil |
#6 · Zasláno: 26. 6. 2014, 12:16:53
Reaguji na quatzaela:
„Takže tady?“ Tak nějak, akorát bez syntaktických chyb. „a javascript těmito daty potom vyplní formulář i s těmi animacemi“ To je opět okamžik, kdy se něco mění a kdy tedy je možné zavolat to, co nyní zbytečně voláš každých padesát milisekund. |
||
quatzael Profil |
#7 · Zasláno: 26. 6. 2014, 14:07:44
Chamurappi:
„Tak nějak, akorát bez syntaktických chyb.“ Je tam nějaká chyba? Kde? „To je opět okamžik, kdy se něco mění a kdy tedy je možné zavolat to, co nyní zbytečně voláš každých padesát milisekund.“ To je pravda. Ale stejně už to tak mám i v tý funkci, že se mi po uploadu volá jiný script, který načte nový hodnoty do sessionStorage.. Takže asi jsou ty setIntervals u těch checkboxů opravdu zbytečný.. |
||
Časová prodleva: 10 let
|
0