用于模拟时钟的setInterval()

时间:2011-07-21 09:32:58

标签: javascript rotation setinterval clock

我是JavaScript的新手,我在使用etInterval()时遇到了麻烦。

我正在创建一个模拟时钟作为练习。我有一个函数setTime(),通过相应地旋转箭头来获取并显示时间。

我想一次又一次地执行这个功能。

这是我的代码:

    $(document).ready(function(){

        function setTime(){
            var d = new Date();
            var hour = d.getHours();
            var minute = d.getMinutes();
            var hourRotation = hour * 30 + (minute / 2);
            var minuteRotation = minute * 6;
            $("#small").css({
                "-webkit-transform": "rotate(" + hourRotation + "deg)",
                "-moz-transform": "rotate(" + hourRotation + "deg)",
                "-o-transform": "rotate(" + hourRotation + "deg)"
            });
            $("#big").css({
                "-webkit-transform": "rotate(" + minuteRotation + "deg)",
                "-moz-transform": "rotate(" + minuteRotation + "deg)",
                "-o-transform": "rotate(" + minuteRotation + "deg)"
            });
        };
        function clockStart(){
            setInterval(setTime(),1000);
            setTime();
        }
        clockStart();
    });

我想了解这种方法以及如何使用它。我能找到的例子看起来很明显,但我仍然无法使其发挥作用。

3 个答案:

答案 0 :(得分:3)

您正在setInterval()进行函数调用。

您想要做的是:

setInterval(setTime,1000);

答案 1 :(得分:2)

当你调用setInterval函数时,你不会将函数引用作为参数传递,但它是返回值。
所以你应该使用:

setInterval(setTime,1000);

setInterval(function(){setTime()},1000);

答案 2 :(得分:2)

在调用setTime()函数之前,对行setInterval(setTime(),1000);中的函数setInterval()进行评估,并将setTime()的评估结果传递给{{函数作为参数,而不是函数istelf作为参数传递。

你需要做的是用这个函数名称(“setInterval()”)替换函数调用(“setTime()”),如下所示: setTime