2009-08-07 63 views
0

我正在開發使用asp.net在線考試申請,在開始考試頁面我創建了一個JavaScript的倒數計時器,我怎麼能移動到下一個頁面automaticaly後計時器達到00,這裏是我的代碼JavaScript的定時器

long timerStartValue = 1000;

private int TimerInterval 
{ 
    get 
    { 
     int o =(int) ViewState["timerInterval"]; 
     if(o==0) 
     { 

      return (o); 
     } 
     return 50 ; 
    } 
    set 
    { 
     ViewState["timerInterval"] = value; 

    } 
} 

protected void Page_PreInit(object sender,EventArgs e) 
{ 
    string timerVal = Request.Form["timerData"]; 
    if(! String.IsNullOrEmpty(timerVal)) 
    { 
     timerVal = timerVal.Replace(",", String.Empty) ; 
     this.timerStartValue = long.Parse(timerVal); 

    } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(! IsPostBack) 
    { 
     this.timerStartValue = 10000; //3599000;//14400000; 
     this.TimerInterval = 500; 
    } 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    this.timerStartValue = 3599000; 
} 

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    System.Text.StringBuilder bldr=new System.Text.StringBuilder(); 
    bldr.AppendFormat("var Timer = new myTimer({0},{1},'{2}','timerData');", this.timerStartValue, this.TimerInterval, this.lblTimerCount.ClientID); 
    bldr.Append("Timer.go()"); 

    ClientScript.RegisterStartupScript(this.GetType(), "TimerScript", bldr.ToString(), true); 
    ClientScript.RegisterHiddenField("timerData", timerStartValue.ToString()); 
} 

thanx提前 桑吉塔

回答

0

這聽起來當你點擊「下一步」按鈕,加載一個全新的頁面等。這當然會改變所有的內容並重置所有的javascript。沒有一點工作,你無法在頁面之間保持狀態。

對此的解決方案可能是當按下下一個按鈕時保存定時器狀態,並將其傳遞到下一個階段。您可以通過將計時器狀態保存到隱藏表單輸入並將其與「下一步」按鈕一起提交來完成此操作。

另一種選擇是通過AJAX加載你的問題。每次點擊下一個按鈕時,您都可以簡單地用新的問題來替換頁面的問題部分,而不必保留定時器。這可能是我會使用的解決方案。

0

當您點擊下一個按鈕時是否重新加載整個頁面?這可能會導致java腳本文件realod。所以變量值將重置。可能您可以考慮通過Ajax顯示問題/答案。顯示下一個問題時無需重新加載整個頁面。當您顯示該部分時測驗只會被更新。所以你也可以在你的java腳本中維護全局變量。查看下面的鏈接,瞭解使用jQuery進行部分頁面更新。

http://www.west-wind.com/presentations/jquery/jquerypart2.aspx

希望這有助於。

0

如果你不能擺脫回發,你可以把計時器放在iframe中。

0

您需要一種方法來在頁面之間持久保存信息,並且實際上只有一種可能性:使其成爲下一頁請求的一部分。

現在,這可以被細分爲兩類:

1)作爲URL的一部分:http://www.example.com/page?timer=123;

2)作爲標題的一部分;

和號碼2打開了新的可能性:

一個)作爲POST數據的一部分;

b)僅作爲客戶端cookie;

c)作爲與服務器上的信息綁定的cookie;

編號1,2a和2b可以由用戶操縱。因此,您可以做的是在cookie中存儲一些值,例如散列值或數據庫行ID,您將使用該值來獲取服務器上的信息。

tl; dr?使用一個asp「會話對象」。它可以讓你保持在服務器端的東西,用戶將不知道他們是什麼。