这是我的代码

(function ($) {

        $.fn.snow2 = function (options) {

            var $flake = $('<a style="text-decoration: none;" href="/flake"><div id="flake" /></a>').css({
                'position': 'absolute',
                'top': '-50px',
                'z-index': '100'
            }).html('&#10052;'),
                documentHeight = $(document).height(),
                documentWidth = $(document).width(),
                defaults = {
                    minSize: 30,
                    maxSize: 50,
                    newOn: Math.floor(Math.random() * 14000) + 7000,
                    flakeColor: "#CE1126"
                },
                options = $.extend({}, defaults, options);


            var interval = setInterval(function () {
                var startPositionLeft = Math.random() * documentWidth - 100,
                    startOpacity = 0.5 + Math.random(),
                    sizeFlake = options.minSize + Math.random() * options.maxSize,
                    endPositionTop = documentHeight - 40,
                    endPositionLeft = startPositionLeft - 100 + Math.random() * 200,
                    durationFall = documentHeight * 10 + Math.random() * 5000;
                $flake
                    .clone()
                    .appendTo('body')
                    .css({
                        left: startPositionLeft,
                        opacity: startOpacity,
                        'font-size': sizeFlake,
                        color: options.flakeColor
                    })
                    .animate({
                            top: endPositionTop,
                            left: endPositionLeft,
                            opacity: 0.2
                        },
                        durationFall,
                        'linear',
                        function () {
                            $(this).remove()
                        }
                );
            }, options.newOn);

        };

    })(jQuery);


我试图让它以7000到14000毫秒的随机间隔吐出一片雪花,问题是当我调用该函数时,它会获得7000到14000之间的随机数,并一次又一次使用相同的值。假设返回12806,它将每12806毫秒吐出一片雪花。我每次都想要一个新号码。我将如何实现这一目标?我从一些不同的地方蚕食了这段代码,并且对JavaScript或jQuery不太了解。任何帮助表示赞赏。

最佳答案

问题是setInterval,它确实可以满足您的要求。我认为您宁愿使用setTimeout。从Mozilla Developer Network

setTimeout()在指定的延迟后调用函数或执行代码段。

setInterval()调用一个函数或重复执行代码段,每次调用该函数之间有固定的时间延迟。

10-04 16:52