| 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: 16 let
|
|||
0