2009-09-15 30 views
1

我想用JavaScript或PHP實現時間計數器。我做了一些在Google上看過並嘗試過,但沒有得到我需要的輸出。使用JavaScript或PHP的時間計數器

用戶將在提供的文本框中輸入時間,然後我需要從他們輸入時間給他們一個計數器。

例子:如果我進入1:27:38並點擊提交,時間應適當減少,當它到達0

我如何能實現這一點,我應該得到一個警告?

回答

3

在JavaScript:

<html> 
<head> 


</head> 
<body> 
<script language="JavaScript"> 
<!-- // 
var timeleft; 
var nextdue; 
var tick = 1000; 



function parseTime(t) { 
var tt = ("0:00:"+t); 
tt = tt.split(":").reverse(); 
return (tt[0] * 1000)+(tt[1] * 60000)+(tt[2] * 3600000); 
} 



function zeroPad(n) { 
if (n<10) return "0"+n; 
return ""+n; 
} 



function makeTime(t) { 
if (t<0) return "0:00:00"; 
var tt=t+999; 
return Math.floor(tt/3600000)+":"+ 
zeroPad(Math.floor(tt/60000)%60)+":"+ 
zeroPad(Math.floor(tt/1000)%60); 
} 



function startTimer() { 
nextdue = new Date().getTime(); 
timeleft = parseTime(document.timerform.timerbox.value); 
runTimer(); 
} 



function runTimer() { 
document.timerform.timerbox.value=makeTime(timeleft); 
if (timeleft<=0) alert ("Time's up!"); 
else { 
    var timecorr = (new Date().getTime())-nextdue; 
    if (timecorr>0 && timecorr<3000) { 
    timeleft -= (tick+timecorr); 
    nextdue += tick; 
    if (timeleft<1) setTimeout ("runTimer()",tick+timeleft); 
    else setTimeout("runTimer()",Math.max(1,tick-timecorr)); 
    } 
    else { 
    nextdue=(new Date().getTime())+tick; 
    timeleft-=tick; 
    if (timeleft<1) setTimeout ("runTimer()",tick+timeleft); 
    else setTimeout("runTimer()",tick); 
    } 
} 
} 



// --> 
</script> 



<form name="timerform"> 
    Decimal places: <input type="text" name="timerbox" value="0:00:00"></input> 
    <input type="button" value="Start timer" onClick="startTimer()"></input> 
</form> 
</body> 
</html> 
+0

優秀的,這是我需要的 感謝名單羅伯特,這節省了一些時間,我 – 2009-09-16 10:22:39

1

在PHP:

list($hours, $minutes, $seconds) = explode(':', $_POST['time']); 

$seconds = $hours * 3600 + $minutes * 60 + $seconds; 

for ($i = $seconds; $i > 0; $i--) 
{ 
    echo $i; 
    sleep(1); 
    flush(); 
} 

echo 'Countdown finished.';