2013-11-28 5 views
0

Это мой сценарий на странице aspx, который используется для инициализации таймера при загрузке страницы.Таймер Javascript инициализируется при каждой обратной передаче

<script type="text/javascript"> 

     function display() { 

      var hours = document.getElementById('<%=HidH.ClientID %>'); 

      var minutes = document.getElementById('<%=HidM.ClientID %>'); 

      var seconds = document.getElementById('<%=HidS.ClientID %>'); 



      if (hours.value == 00 && minutes.value == 00 && seconds.value == 00) { 

       PageMethods.ReturnQuestionId(1); 

       alert("Time Given For this Test is Over"); 


       var newwindow = window.location.replace("frmResultCheck.aspx"); 

       if (window.focus) { newwindow.focus() } 
       return false; 

      } 
      if (minutes.value < 10) { 
       minutes.value = minutes.value; 
      } 
      if (seconds.value <= 00) { 
       if ((hours.value == 00) && (minutes.value == 00)) 
        seconds.value = 00; 
       else { 
        seconds.value = 60; 
        minutes.value -= 01; 
       } 
      } 

      if (minutes.value <= 00) { 
       if ((hours.value < 00) && (seconds.value < 00)) { 
        hours.value = minutes.value = seconds.value = 00; 
       } 
       else { 
        if ((hours.value == 00) && (seconds.value == 00)) 
         hours.value = seconds.value = 00; 
        if ((hours.value > 00) && (minutes.value < 00)) { 
         minutes.value = 59; 
         hours.value -= 01; 
        } 
       } 
      } 
      if ((minutes.value <= -01) || (hours.value <= -01)) { 
       if (hours.value <= -01) { 
        minutes.value = 00; 
        hours.value += 01; 
       } 
       else 

        minutes.value -= 01; 
       seconds.value = 00; 
       minutes.value += 01; 
      } 
      else 
       if (seconds.value > 00) 
        seconds.value -= 01; 

      if (hours.value.length < 2) { 
       hours.value = "0" + hours.value; 

      } 
      if (minutes.value.length < 2) { 
       minutes.value = "0" + minutes.value; 

      } 
      if (seconds.value.length < 2) { 
       seconds.value = "0" + seconds.value; 

      } 

      document.getElementById('counter').value = hours.value + ":" + minutes.value + 


":" + seconds.value; 

      setTimeout("display()", 1000); 



      if (document.getElementById('btnSubmit').onclick == true) 



       document.getElementById('counter').value = ""; 
     } 

     display(); 
    </script> 

Это моя aspx.cs страница:

protected void Page_Load(object sender, EventArgs e) 
    { 
int factor; 
    if (factor >= 60) 
       { 
        int b = factor/60; 
        factor = factor % 60; 
        string time = Convert.ToString(b + ":" + factor); 

        if (factor < 10) 
        { 
         timer = TimeSpan.ParseExact(time, @"h\:m", null); 
        } 
        else 
        { 
         timer = TimeSpan.ParseExact(time, @"h\:mm", null); 
        } 
       } 
       else if (factor > 9 && factor < 60) 
       { 
        timer = TimeSpan.ParseExact(factor.ToString(), "mm", null); 
       } 
       else 
       { 
        timer = TimeSpan.ParseExact("0" + factor.ToString(), "mm", null); 


       } 
       HidH.Value = Convert.ToString(timer.Hours); 



       HidM.Value = Convert.ToString(timer.Minutes); 



       HidS.Value = Convert.ToString(timer.Seconds); 
} 

Everytime я нажмите кнопку Далее, на странице, таймер возвращается в то же время, на котором я нажал на кнопку Далее. Я хочу, чтобы мой таймер продолжал работать даже на обратной стороне.

+0

Можете ли вы объяснить логику в этом вопросе, вы предоставили код уже который хорош .. ** немного логическое объяснение поможет нам лучше понять ** .. – SridharVenkat

+0

Alright, приведенный выше код отвечает за таймер обратного отсчета на странице. Когда я нажимаю на следующую кнопку на странице, чтобы перейти в новое место, таймер javascript инициализируется в то же время, когда я нажал на следующую кнопку. Предположим, время было 01:09:55, когда я нажал на следующую кнопку, после чего загружается страница, но когда загружается новая страница, таймер возвращается к 01:09:55 вместо времени, затраченного на загрузку страницы. Таймер должно быть в 01:09:42 или что-то в этом роде. –

+0

вы можете использовать здесь сессию, поместить значение трекера в скрытое поле и прочитать это значение при загрузке DOM –

ответ

0

В коде C_ Page_Load, проверьте, является ли это пост-обратно перед инициализацией значений. Инициализируйте только в том случае, если это первая загрузка (т. Е. !IsPostBack).
Как это:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     // Your initializing code here 
    } 
} 
+0

Спасибо за ответ. Позвольте мне попробовать и вернуться к вам .. –

+0

Ничего не приятель, не работая с этим трюком. –

+0

Каков ожидаемый результат и текущий результат? Есть ли ошибка? – P5Coder

Смежные вопросы