2

我正在设计一个网站,我想每隔一秒调用一次这个方法,我使用 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;
 }

感谢您的帮助!

4

4 回答 4

2

由于以下原因,该代码不起作用:

  • 您在调用中有time()代替,它将调用函数并将返回值用作回调,而不是将函数用作回调。timesetInterval

  • 您已将时间设置为五秒(5000 毫秒)而不是一秒(1000 毫秒)。

  • 您缺少ready呼叫的右括号。

  • 该函数不是Javascript,而是C#。您不能直接从客户端脚本调用服务器代码。

要解决所有这些问题(假设time1页面中有一个带有 id 的字段),它将是:

<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>
于 2013-04-28T11:32:20.500 回答
1

好的,你在这里得到了很多不好的答案。(编辑:我以某种方式设法错过了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调用,无论哪种方式,您给出的时间都只会大致完成。所以如果你真的想每秒更新一些东西,如果你每秒安排一次,它看起来会有点不平衡。因此,您可能会考虑每(例如)四分之一秒(250 毫秒)执行一次,因为您所做的并不是对浏览器造成远程负担。实例| 资源

于 2013-04-28T12:28:01.307 回答
1

您有语法错误问题,并且您没有包含 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>
于 2013-04-28T12:06:57.913 回答
-1

您可以像这样使用本机 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 秒有何不同。

于 2013-04-28T11:28:44.633 回答