我正在尝试创建一个Web应用程序,您可以在其中看到Ajax倒数计时器。每当我按下一个按钮时,倒计时应该回到30并继续倒计时。
现在的问题是每当我按下按钮时,计时器会继续倒计时一秒钟或2秒钟,大部分时间后计时器会长时间保持30秒。
WebForm代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="geen verbinding"></asp:Label>
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<br />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
</asp:UpdatePanel>
<asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick">
</asp:Timer>
</form>
代码背后:
static int timer = 30;
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = timer.ToString();
}
protected void Timer1_Tick(object sender, EventArgs e)
{
timer--;
}
protected void Button1_Click(object sender, EventArgs e)
{
timer = 30;
}
希望有人知道问题是什么,以及是否还有解决方法。
提前致谢!
答案 0 :(得分:1)
为什么不在ClientSide上完全实现Timer?你能解释为什么它必须是一个回调吗?它需要在服务器上做什么?
<script type="text/javascript" language="javascript">
var timer = 0;
function resetTimer() {
timer = 0;
timerTick();
}
function timerTick() {
var target = document.getElementById("timerResult");
target.innerHTML = timer++;
window.setTimeout("timerTick()", 1000);
}
</script>
在身体标签......
<body onload="timerTick();">
在某处展示
<div id="timerResult" >timerResult</div>
你只需要添加一个按钮chich调用resetTimer()。我会把它留给你