开发者

setInterval() for an analogue clock

I'm quite new to JavaScript and I have trouble working with etInterval().

I'm creating an analogue clock as an exercise. I have a function setTime() that gets and displays the time by rotating the arrows accordingly.

I want to execute this function again and again.

Here is my code :

    $(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);
        开发者_StackOverflow中文版    setTime();
        }
        clockStart();
    });

I'd like to understand this method and how to use it. The examples I could find looked so obvious, but still I can't make it work.


You are making a function call in setInterval().

What you want to do is :

setInterval(setTime,1000);


when you call you setInterval function, you don't pass the function reference as a parameter, but it's return value.
So you should use:

setInterval(setTime,1000);

or

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


The function setTime() in the line setInterval(setTime(),1000); is getting evaluated before the setInterval() function is called, and the results of the evaluation of setTime() are passed to the setInterval() function as an argument, rather than the function istelf being passed as an argument.

What you need to do is replace the function call ("setTime()") with this name of the function ("setTime") like this: setInterval(setTime, 1000);

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜