我目前正在将 vb.net winforms 程序移植到基于 Web 的版本,并且原始程序中的一个功能已被难倒。
在原始程序中,每 5 分钟会弹出一个表单供用户输入。主窗体上还有一个标签控件,可以倒计时到下一个弹出窗口。这是通过一个持续时间为 1 秒的定时器控制来实现的。每次滴答,它都会减少倒计时,当倒计时达到0时,它会弹出表单然后重置。很简单,但在我的网络应用程序中,我无法承受每秒都进行回发,所以我试图将 javascript 倒计时小部件与 AJAX 计时器结合起来。本质上,应该发生的是,当页面加载时,倒计时从 300 秒开始递减,而 AJAX 计时器从 300 秒的持续时间开始。我的想法是,当计时器滴答作响时,它将运行我的功能,并将倒计时再次重置为 300 秒。
我的问题是我无法使用我拥有的代码重置倒计时,而且我知道我做错了一些事情(可能非常简单),但我对 Java 的了解不够多,无法知道是什么。
如果我将 Timer var 硬编码为 300,则倒计时有效,并且计时器滴答作响(触发附加功能),但倒计时只是继续倒计时(变为负数)。如何从后面的代码中重置倒计时变量?
这是倒计时功能
var Timer = <%= CountDown %>;
function updateClock() {
// Update Countdown
Timer -= 1;
var TimerMin = Math.floor(Timer / 60);
var TimerSec = Timer - (TimerMin * 60);
TimerSec = (TimerSec < 10 ? "0" : "") + TimerSec;
var TimerFormat = TimerMin + ":" + TimerSec;
// Update the countdown display
document.getElementById("javaCountdown").firstChild.nodeValue = TimerFormat
}
这是正文代码
<body onload="updateClock(); setInterval('updateClock()', 1000 )">
以及背后的代码
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Countdown = 300
End Sub
PProtected Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
Countdown = 300
'Additional Functions
End Sub