Autor | Zpráva | ||
---|---|---|---|
Sys Profil * |
#1 · Zasláno: 10. 5. 2010, 19:36:00
cc, nevite nekdo jak udelat aby šlo na link (a href) udělat aby šel zmáčknout jen jednou za sekundu jinak by vracel false ?
|
||
SwimX Profil |
#2 · Zasláno: 10. 5. 2010, 22:59:27
Sys:
javascriptu nefandím, ale funguje mi todle v rychlosti sesmolené. <script> var prvni = new Date(); function uz(){ var ted = new Date(); var vystup; if (prvni.getTime()+1000 > ted.getTime() ){ vystup = false; } else{ vystup = true; } prvni = new Date(); return vystup; } </script> <a href="#" onclick="return !uz();">klik</a> ale někdo určitě poradí něco hezčího :) |
||
Časová prodleva: 6 dní
|
|||
Witiko Profil |
#3 · Zasláno: 16. 5. 2010, 18:14:52 · Upravil/a: Witiko
Možná jen pokud jde o co nejkratší zápis:
<script type="text/javascript"> const time = 1000; var prvni = new Date(); function uz(){ var ted = new Date(); var vystup = prvni.getTime()+time<ted.getTime()?true:false; prvni = new Date(); return vystup; } </script> <a href="javascript:;" onclick="return uz();">klik</a> |
||
Chamurappi Profil |
#4 · Zasláno: 16. 5. 2010, 19:16:54
Reaguji na Witika:
„const time = 1000;“ To má být jako konstanta? „prvni.getTime()+time<ted.getTime()?true:false“ Výsledkem porovnání už je true nebo false , netřeba ternárního operátoru.
|
||
Witiko Profil |
#5 · Zasláno: 16. 5. 2010, 19:36:01 · Upravil/a: Witiko
Chamurappi:
„To má být jako konstanta?“ Ano, předpokládám, že čas se nebude měnit, tak ho definuji jako konstantu. EDIT: Tak zjišťuji, že MSIE keyword const nepodporuje. V tom případě bude muset posloužit proměnná. <script type="text/javascript"> var time = 1000; var prvni = new Date(); function uz(){ var ted = new Date(); var vystup = prvni.getTime()+time<ted.getTime(); prvni = new Date(); return vystup; } </script> <a href="javascript:;" onclick="return uz();">klik</a> |
||
Chamurappi Profil |
#6 · Zasláno: 17. 5. 2010, 15:23:28 · Upravil/a: Chamurappi
Reaguji na Witika:
Proč je prvni datum? Proč to není obyčejné číslo? Na „co nejkratší zápis“ je to pořád zbytečně ukecané a neefektivní. Mělo by stačit všehovšudy jen jedno volání metody getTime , víc práce s časem není potřeba.
Všechny dosud uvedené kódy znemožňují prokliknutí během první sekundy po načtení, což zadání nezmiňuje. „předpokládám, že čas se nebude měnit, tak ho definuji jako konstantu“ Konstanty v JS neexistují, když nepočítáme proprietární rozšíření v některých prohlížečích. Reaguji na Syse: K čemu by vlastně ten skript měl sloužit? Ten odkaz je normální odkaz? Můžu si ho třeba i otevírat do nového okna? |
||
Witiko Profil |
#7 · Zasláno: 17. 5. 2010, 18:01:24 · Upravil/a: Witiko
Chamurappi:
„Všechny dosud uvedené kódy znemožňují prokliknutí během první sekundy po načtení, což zadání nezmiňuje.“ Ano a stejně tak i prokliknutí během dané sekundy sekundový lockout obnovuje, což nejspíš nebyl záměr. <script type="text/javascript"> var lockout = 1000; var prvni = 0; function uz() { var ted = new Date().getTime(); if(prvni+lockout>ted) return false; else { prvni = ted; return true; } } </script> <a href="javascript:;" onclick="return uz();">klik</a> V případě, že to záměr byl a při každém kliknutí se má timer obnovit (čímž bude uživatel zcela neschopen se odkazem prokliknout), tak lze funkci zapsat na jednom řádku: <script type="text/javascript"> var lockout = 1000; var prvni = 0; function uz() { return prvni+lockout<(prvni = new Date().getTime()); } </script> <a href="javascript:;" onclick="return uz();">klik</a> |
||
Časová prodleva: 14 let
|
0