我发现的几个例子需要一个Form标签,它似乎与我现有的应用程序不太匹配。
我需要做的是在我的页面上添加一个计时器,一旦按下一个按钮就开始计时,并在按下另一个按钮后立即停止计数。这些按钮位于秒表应驻留的UpdatePanel之外。
这可能与Java有关吗?我发现这个答案似乎很有希望,但不起作用:
How to create a stopwatch timer
它似乎不喜欢tm1_Tick函数的第一行,因为它认为sw为NULL。
任何示例代码或方向都将受到赞赏。
答案 0 :(得分:1)
我认为你的意思是“JavaScript”。客户端解决方案可以很好地使用JS。
在线发现这个非常好的例子(免责声明,这不是我的代码):
var h1 = document.getElementsByTagName('h1')[0],
start = document.getElementById('start'),
stop = document.getElementById('stop'),
clear = document.getElementById('clear'),
seconds = 0, minutes = 0, hours = 0,
t;
function add() {
seconds++;
if (seconds >= 60) {
seconds = 0;
minutes++;
if (minutes >= 60) {
minutes = 0;
hours++;
}
}
h1.textContent = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":" + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":" + (seconds > 9 ? seconds : "0" + seconds);
timer();
}
function timer() {
t = setTimeout(add, 1000);
}
timer();
/* Start button */
start.onclick = timer;
/* Stop button */
stop.onclick = function() {
clearTimeout(t);
}
/* Clear button */
clear.onclick = function() {
h1.textContent = "00:00:00";
seconds = 0; minutes = 0; hours = 0;
}
答案 1 :(得分:1)
为了清楚起见,我把它作为一个答案,但它是基于Jamieson的答案。最终结果是添加了这个Javascript:
<script type = "text/javascript">
/* Stop, Clear and Pause the timer displayed under the pause buttons */
var h1 = document.getElementsByTagName('h1')[0],
start = document.getElementById('start'),
stop = document.getElementById('stop'),
clear = document.getElementById('clear'),
seconds = 0, minutes = 0, hours = 0,
t;
function add() {
seconds++;
if (seconds >= 60) {
seconds = 0;
minutes++;
if (minutes >= 60) {
minutes = 0;
hours++;
}
}
document.getElementById('<%=h1.ClientID%>').innerText = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":" + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":" + (seconds > 9 ? seconds : "0" + seconds);;
timer();
}
function timer() {
t = setTimeout(add, 1000);
}
function stp() {
clearTimeout(t);
}
function clr() {
document.getElementById('<%=h1.ClientID%>').innerText = "00:00:00";
seconds = 0; minutes = 0; hours = 0;
}
</script>
您需要添加的ASP.Net文件是:
<asp:UpdatePanel ID="UpdatePanel4" runat="server">
<ContentTemplate>
<table style="width:132px; margin-left:13px">
<tr>
<td style="text-align:center; margin-left:2px; border:double; background-color:darkcyan">
<asp:Label ID="h1" runat="server" ForeColor="White"><time>00:00:00</time></asp:Label>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
然后,在我的ASP按钮上添加了这个:
onclientclick="stp();"
(如果你已经在你的按钮上有一个onclientclick,只需用分号分隔它们,你就可以在onclientclick中有多个函数)
然后我需要将其添加到我的代码隐藏中的几个位置:
ScriptManager.RegisterClientScriptBlock(UpdatePanel4, this.GetType(), "script", "stp()", true);
ScriptManager.RegisterClientScriptBlock(UpdatePanel4, this.GetType(), "script", "clr()", true);
最后一部分可能是必要的,也可能不是,这取决于你正在做什么。
答案 2 :(得分:0)
如果我正确理解您的问题,您可以完全使用JavaScript创建自己的倒数计时器,然后对更新面板进行AJAX调用。
这是一个纯粹的JS倒计时的简短例子:
var start = document.getElementById("start");
start.addEventListener("click", function() {
var interval = setInterval(function() {
var watch = document.getElementById("watch");
var value = watch.value - 1;
watch.value = value;
if (value <= 0)
clearInterval(interval);
}, 1000);
});
&#13;
<input id="watch" value="10" />
<input id="start" type="button" value="start" />
&#13;