Таймер Javascript инициализируется при каждой обратной передаче

0

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

<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);
}

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

  • 0
    Можете ли вы объяснить логику в вопросе, вы уже предоставили код, который хорош ... небольшое логическое объяснение поможет нам лучше понять ..
  • 0
    Хорошо, приведенный выше код отвечает за таймер обратного отсчета на странице. Когда я нажимаю на следующую кнопку на странице, чтобы переместиться в новое место, таймер javascript инициализируется в то же время, в которое я нажимал на следующую кнопку. время было 01:09:55, когда я нажал следующую кнопку, после чего страница загружается, но когда загружается новая страница, таймер возвращается к 01:09:55 вместо времени, необходимого для загрузки страницы. Таймер должен быть в 01:09:42 или что-то в этом роде.
Показать ещё 5 комментариев
Теги:
timer

1 ответ

0

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

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        // Your initializing code here
    }
}
  • 0
    Спасибо за ответ. Позвольте мне попытаться вернуться к вам ..
  • 0
    Нет, приятель, не работаю с этим трюком.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню