Javascript:不修改滑块函数中的全局变量

时间:2013-12-16 07:13:02

标签: javascript html css

我的网页上有一个滑块,我试图使用全局变量根据当前幻灯片操作此时间。我的问题是:我是否正确操作全局变量(将其设置为10000或2000)和/或在正确的位置创建全局变量。

永远感谢, 岩石

<script>
    var timer = 4000;
    function slideShow() {
        var displayToggled = false;
        var current1 = $('.slide:visible');
        var nextSlide = current1.next('.slide');
        var hideoptions = {
            "direction": "left",
            "mode": "hide"
        };
        var showoptions = {
            "direction": "right",
            "mode": "show"
        };


        if (current1.is(':last-child')) {
            current1.effect("slide", hideoptions, 2000);
            $("#firstSlide").effect("slide", showoptions, 2000);
            timer = 10000;
        }
        else if (current1.is(':first-child')) {
            current1.effect("slide", hideoptions, 1000);
            nextSlide.effect("slide", showoptions, 1000);
            timer = 2000;
        }
        else {
            current1.effect("slide", hideoptions, 2000);
            nextSlide.effect("slide", showoptions, 2000);
            timer = 10000;
        }
    };

    setInterval(slideShow, timer);
    slideShow();
</script>

的引用: 原始幻灯片显示:Simple Slideshow jQuery/UI images inline

实时网站示例:http://www.nerdherdgames.com

修改:实际网站目前在索引页面上没有此特定的javascript

2 个答案:

答案 0 :(得分:0)

Number是javascript中的原始类型,它不是对象,对象是通过引用传递的,但是数字是按值传递的。所以在你第一次调用

之后
setInterval(slideShow, timer);

无论您如何更改变量计时器,都不会影响第一次设置的间隔。

答案 1 :(得分:0)

setInterval(slideShow, timer);将只设置一次,因此间隔将是timer中的第一个值,或者您可以使用setTimeout,因此您将在每次函数结束时设置计时器。这意味着,您不应在每张幻灯片上更改timer的值,而应在动画结束时开始setTimeout

setTimeout on MDN