如何每秒调用一个方法

本文关键字:一个 方法 何每秒 调用 | 更新日期: 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秒有什么不同