如何每秒调用一个方法
本文关键字:一个 方法 何每秒 调用 | 更新日期: 2023-09-27 18:11:25
我正在设计一个网站,我想每秒钟调用这个方法,我使用asp.net,不知道关于javascript的任何事情,但我用过这个代码(我从谷歌得到),它不工作!!我把我所有的代码在这里(它是在webform.aspx)!
<script >
$(document).ready(function(){
var interval=setInterval(time(),5000);}
</script>
<script runat="server">
// <![CDATA[
public void time()
{
DateTime date = DateTime.Now;
string hour = date.Hour.ToString();
string min = date.Minute.ToString();
string sec = date.Second.ToString();
time1.Value = hour + ":" + min + ":" + sec;
}
谢谢你的帮助!
代码不能工作,原因如下:
-
在
setInterval
调用中有time()
而不是time
,它将调用函数并使用返回值作为回调,而不是使用函数作为回调。 -
设置时间为5秒(5000ms),而不是1秒(1000ms)。
-
您缺少
ready
调用的右括号。 -
函数不是Javascript,而是c#。你不能直接从客户端脚本调用服务器代码
要修复所有这些(假设页面中有一个id为time1
的字段),它将是:
<script type="text/javascript">
$(document).ready(function(){
var interval = setInterval(time, 1000);
});
function time() {
var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds();
$('#time1').val(hour + ":" + min + ":" + sec);
}
</script>
您有语法错误问题,并且您没有包含jquery。
我的例子基于你的代码但与纯javascript:
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(document).ready(function(){
var interval=setInterval(time, 5000);
}); // ending ')' was missing
</script>
<script>
function time(){
var date = new Date();
alert("Hour is: " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds());
}
</script>
好吧,你在这里得到了很多不太好的答案。(编辑:我不知何故错过了Guffa的答案,这是相当不错的。但由于我提供的细节比他多,我将留下这个答案。此外,这个答案不需要jQuery,显然OP没有使用。
在JavaScript中,要重复调用一个函数,您可以使用setInterval
(它将重复调用它)或setTimeout
(它将调用它一次),并让函数自己安排下一次调用。在这两种情况下,您都希望给setInterval
/setTimeout
一个函数引用。你不想给它一个字符串,你不想调用函数,这是其他答案所做的。所以:
<script>
(function() {
var elm = document.getElementById("id_of_element_you_want_to_contain_time");
setInterval(updateTime, 1000);
function updateTime() {
var now = new Date(),
hours = zeropad(now.getHours(), 2),
minutes = zeropad(now.getMinutes(), 2),
seconds = zeropad(now.getSeconds(), 2);
elm.innerHTML = hours + ":" + minutes + ":" + seconds;
}
function zeropad(str, width) {
str = String(str);
while (str.length < width) {
str = "0" + str;
}
return str;
}
})();
</script>
将脚本放在元素的id="id_of_element_you_want_to_contain_time"
下面,以便在第一行找到该元素时该元素存在。
实例|来源
现在,请注意,无论您是使用setInterval
还是一系列setTimeout
调用,无论哪种方式,您给出的时间都只会大约完成。所以如果你真的想要每秒更新一些东西,如果你每秒钟都安排它,它会看起来有点不均匀。因此,您可以考虑每隔(比如)四分之一秒(250ms)执行一次,因为您所做的事情不会对浏览器造成远程负担。实例| Source
可以这样使用原生JavaScript函数:
<script type="text/javascript">
// function like your server-side function
function time () {
var now = new Date();
console.log(now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds());
}
window.onload = function () {
setInterval(time, 1000)
};
</script>
但是你需要知道JavaScript的1秒和实时的1秒有什么不同