Это мой сценарий на странице 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 я нажмите кнопку Далее, на странице, таймер возвращается в то же время, на котором я нажал на кнопку Далее. Я хочу, чтобы мой таймер продолжал работать даже на обратной стороне.
Можете ли вы объяснить логику в этом вопросе, вы предоставили код уже который хорош .. ** немного логическое объяснение поможет нам лучше понять ** .. – SridharVenkat
Alright, приведенный выше код отвечает за таймер обратного отсчета на странице. Когда я нажимаю на следующую кнопку на странице, чтобы перейти в новое место, таймер javascript инициализируется в то же время, когда я нажал на следующую кнопку. Предположим, время было 01:09:55, когда я нажал на следующую кнопку, после чего загружается страница, но когда загружается новая страница, таймер возвращается к 01:09:55 вместо времени, затраченного на загрузку страницы. Таймер должно быть в 01:09:42 или что-то в этом роде. –
вы можете использовать здесь сессию, поместить значение трекера в скрытое поле и прочитать это значение при загрузке DOM –