2008-09-20 106 views
3

您能否推薦一種方法在ASP.NET頁面上放置臨時定時器?ASP.NET頁面上的倒數計時器

現在我用這個代碼:

Default.aspx的

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
<ContentTemplate> 
    <asp:Label ID="Label1" runat="server">60</asp:Label> 
    <asp:Timer ID="Timer1" runat="server" Interval="1000" 
     ontick="Timer1_Tick"> 
    </asp:Timer> 
</ContentTemplate> 
</asp:UpdatePanel> 

Default.aspx.cs

protected void Timer1_Tick(object sender, EventArgs e) 
{ 
    int seconds = int.Parse(Label1.Text); 
    if (seconds > 0) 
     Label1.Text = (seconds - 1).ToString(); 
    else 
     Timer1.Enabled = false; 
} 

但它是昂貴的流量。我寧願純粹的客戶端方法。在ASP.NET中可能嗎?

+0

這很有趣,你問這個...我只是實現類似你們的解決方案前幾天。它必須完成,這是快速和骯髒的。我會很樂意看到如何做到這一點客戶端。 – mattruma 2008-09-20 19:26:52

回答

5

OK添加這樣的事情,最後我用

<span id="timerLabel" runat="server"></span> 

<script type="text/javascript"> 

    function countdown() 
    { 
     seconds = document.getElementById("timerLabel").innerHTML; 
     if (seconds > 0) 
     { 
      document.getElementById("timerLabel").innerHTML = seconds - 1; 
      setTimeout("countdown()", 1000); 
     } 
    } 

    setTimeout("countdown()", 1000); 

</script> 

真正簡單的結束。像使用JavaScript的老式簡單HTML一樣。

+0

回發後定時器值得到重置。 – Sharique 2009-05-27 06:06:49

2

你可以在你的.aspx頁面

<form name="counter"><input type="text" size="8" 
name="d2"></form> 

<script> 
<!-- 
// 
var milisec=0 
var seconds=30 
document.counter.d2.value='30' 

function display(){ 
if (milisec<=0){ 
    milisec=9 
    seconds-=1 
} 
if (seconds<=-1){ 
    milisec=0 
    seconds+=1 
} 
else 
    milisec-=1 
    document.counter.d2.value=seconds+"."+milisec 
    setTimeout("display()",100) 
} 
display() 
--> 
</script> 

找到here

1

利用這段JavaScript代碼----

var sec=0 ; 
var min=0; 
var hour=0; 
var t; 

function display(){ 
if (sec<=0){ 
    sec+=1; 
} 
if(sec==60) 
{ 
sec=0; 
min+=1; 
} 
if(min==60){ 
hour+=1; 
min=0; 
} 

if (min<=-1){ 
    sec=0; 
    min+=1; 
} 

else 
    sec+=1 ; 
document.getElementById("<%=TextBox1.ClientID%>").value=hour+":"+min+":"+sec; 
    t=setTimeout("display()",1000); 
    } 
window.onload=display; 
3
time1 = (DateTime)ViewState["time"] - DateTime.Now; 

if (time1.TotalSeconds <= 0) 
{ 
    Label1.Text = Label2.Text = "TimeOut!";     
} 
else 
{ 
    if (time1.TotalMinutes > 59) 
    { 
     Label1.Text = Label2.Text = string.Format("{0}:{1:D2}:{2:D2}", 
               time1.Hours, 
               time1.Minutes, 
               time1.Seconds); 
    } 
    else 
    { 
     Label1.Text = Label2.Text = string.Format("{0:D2}:{1:D2}",          
               time1.Minutes, 
               time1.Seconds); 
    } 
} 
2
<script type="text/javascript"> 
    var sec = 10; 
    var min = 0 
    var hour = 0; 
    var t; 

    function display() { 
     sec -= 1 
     if ((sec == 0) && (min == 0) && (hour == 0)) { 
      //if a popup window is used: 
      setTimeout("self.close()", 1000); 
      return; 
     } 
     if (sec < 0) { 
      sec = 59; 
      min -= 1; 
     } 
     if (min < 0) { 
      min = 59; 
      hour -= 1; 
     } 
     else 
     document.getElementById("<%=TextBox1.ClientID%>").value = hour + ":" + min + ":" + sec; 
     t = setTimeout("display()", 1000); 
    } 
    window.onload = display; 
</script>