setInterval()用于模拟时钟

setInterval() for an analogue clock

本文关键字:模拟 时钟 用于 setInterval      更新时间:2023-09-26

我对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();
    });

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

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

你要做的是:

setInterval(setTime,1000);

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

setInterval(setTime,1000);

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

setInterval(setTime(),1000);行中的setTime()函数在调用setInterval()函数之前被求值,并且setTime()的求值结果作为参数传递给setInterval()函数,而不是将函数本身作为参数传递。

你需要做的是用这个函数的名字(" setTime ")替换函数调用(" setTime() "),像这样:setInterval(setTime, 1000);