Javascript - időzítő gombot aktivál
Van egy időzítő, ami 10 másodperctől számol vissza, és az oldal alján található egy gomb, ami más feladatokat hajt végre. A lényeg a lényegben, hogy ha letelik az idő akkor aktiválódjon a gomb anélkül hogy rá kelljen kattintanom.
■
//időzítő
<script type="text/javascript">
var sz = 100;
var megy;
function indit()
{
stopper();
}
function allit()
{
clearTimeout(megy);
}
function stopper()
{
sz--;
b = Math.floor(sz/60/60/10);
sz0 = sz-b*60*60*10;
c = Math.floor(sz0/60/10);
sz0 = sz0-c*60*10;
d = Math.floor(sz0/10);
e = sz0-d*10;
if(b<10)
{
b="0"+b;
}
if(c<10)
{
c="0"+c;
}
if(d<10)
{
d="0"+d;
}
if ((b == 0) & (c == 0) & (d == 0) & (e == 0))
{
clearTimeout(megy);
sz = 100;
// ide kell a gomb parancs...
}
document.getElementById("timer").innerHTML = "idő: "+b+" : "+c+" : "+d+"," +e;
megy = setTimeout('stopper();',100)
}
</script>
<table align="center" border="3">
<tr><td align="center" colspan="2"><div id="timer"></div></td></tr>
<tr><td colspan="2" align="center">
<button onclick="indit();">start</button>
<button onclick="allit();">pause</button>
</td></tr>
//lenti gomb...
<input type="submit" name="megold" value="Értékelés">
?
Beszíneztem neki :-) Az a baj
<script type="text/javascript">
Stopper=
{
startDelay: 10*1000,
stepSize: 10,
start: function ()
{
if (!this.paused && this.running)
{
return;
}
clearInterval(this.timer);
if (this.paused)
{
this.paused=false;
}
else
{
this.delay=this.startDelay;
}
this.checkPoint=new Date();
this.timer=setInterval(function (){Stopper.step();},this.stepSize);
this.running=true;
this.fireEvent("start");
this.step();
},
pause: function ()
{
if (!this.paused && this.running)
{
this.paused=true;
clearInterval(this.timer);
this.delay-=this.now-this.checkPoint;
this.fireEvent("pause");
}
},
step: function ()
{
this.now=new Date();
this.interval=this.delay-(this.now-this.checkPoint);
if (this.interval<=0)
{
this.interval=0;
this.running=false;
clearInterval(this.timer);
}
this.time=this.createTime(this.interval);
this.fireEvent("time",this.time);
if (this.running==false)
{
this.fireEvent("timeout");
}
},
createTime: function (interval)
{
var time={};
var curr=interval;
time.hours=curr/(1000*60*60)|0;
curr=curr%(1000*60*60);
time.minutes=curr/(1000*60)|0;
curr=curr%(1000*60);
time.seconds=curr/1000|0;
curr=curr%1000;
time.milliSeconds=curr|0;
return time;
},
fireEvent: function (type)
{
if (!this.listeners.hasOwnProperty(type))
{
return;
}
var listener=this.listeners[type];
var args=Array.prototype.slice.call(arguments,1);
listener.apply(this,args);
},
addEventListener: function (type,listener)
{
this.listeners[type]=listener;
},
removeEventListener: function (type)
{
delete(this.listeners[type]);
},
listeners:
{
time: function (time)
{
document.getElementById("timer").innerHTML=
(
"idő: "+
time.hours+" : "+
time.minutes+" : "+
time.seconds+"." +
(time.milliSeconds/100|0)
);
},
timeout: function ()
{
document.getElementById("megold").removeAttribute("disabled");
}
}
};
</script>
<table align="center" border="3">
<tr><td align="center" colspan="2"><div id="timer"></div></td></tr>
<tr><td colspan="2" align="center">
<button onclick="Stopper.start();">start</button>
<button onclick="Stopper.pause();">pause</button>
</td></tr>
//lenti gomb...
<input type="submit" id="megold" name="megold" value="Értékelés" disabled="disabled" />
Érdekes, hogy miután egyszer lejön róla a disabled, akkor már a cache-ből úgy tölti vissza az oldalt, hogy nincs rajta. Csak a ctrl+f5, amivel újra disabled-re varázsolható a gomb.
Sima intervallal és számolgatással nem lehet normális időzítőt csinálni, mert nem tartja pontosan az időközöket. Furcsa a kódszínező, néha duplán ír ki szavakat, majd ránézek, hogy mi a gond, ha lesz időm.
köszönöm mindkettőtöknek a
Kipróbáltam mindkettőt és lehet hogy velem van a hiba, de egyik sem működik. Dreamweaver-ben dolgozom, kipróbáltam az elsőt, ott lepereg az idő és kezdi elölről, a második, roppant hosszú válaszban leírt kód meg szimplán nem fut le. A gomb az idők végezetéig disabled marad, mivel az időzítőt nem lehet elindítani. Természetesen köszönöm, hogy foglalkoztok a kérésemmel, hálás vagyok érte, csak a gond, hogy a baj nem múlt el :S
Próbáld most, leszedtem a
:)
Igen, többször láttam, hogy van a kódszínező használatára próbálkozás, csak még sem sikerül. Ilyenkor nem is szoktam szólni. (gondolom ez olyankor fordulhat elő, olyan formátumot állít be, amihez nincs pattern és ezért jelenik meg ilyenkor dobozban, de csak szürkítve)
(Szerintem nagy segítség lenne a kezdők számára, ha az űrlap elemekhez tartozna súgó.)
A js cache hiba ismert.. :) Én inicializáló js-el szoktam javítani:
Ilyesmi
Számolni számol, de ha eléri
Elfelejtettem említeni, hogy a form method az post kell hogy legyen!
post
küldtem egy mailt ;)