【问题标题】:Javascript: not modifying global variables in slider functionJavascript:不修改滑块函数中的全局变量
【发布时间】:2013-12-16 15:41:25
【问题描述】:

我的网页上有一个滑块,我正在尝试使用全局变量根据当前幻灯片来操纵这个时间。我的问题是:我是否正确地操作了全局变量(将其设置为 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

【问题讨论】:

  • 可以加个jsfiddle吗?
  • 我可以给你一个现场的例子:nerdherdgames.com
  • 你的问题是什么?如果您想知道变量var timer = 4000;,它会设置在正确的位置。
  • @daguru 我正在尝试根据函数 slideshow() 中的当前幻灯片更改变量 timer 的值,即每个 if、else-if、timer = 10000timer = 2000和其他块。谢谢,我希望这能解决问题。

标签: javascript html css


【解决方案1】:

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

setTimeout on MDN

【讨论】:

  • 感谢您为我澄清 setInterval 和 setTimeout 之间的区别和适当的区别。
【解决方案2】:

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

setInterval(slideShow, timer);

无论你如何改变可变定时器,都不会影响第一次设置的时间间隔。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多