2

基本上,我所拥有的是函数内部的 setInterval。我想做的是,从外部控制它的行为。

这就是我所拥有的 -

function wheee() {
var i = 1;

slideee = setInterval(function() {
sliderContent.style.marginLeft = margin(i);
    if(i < imagesNoOneLess) {
        i++;
    } else {
        i = 0;
    }
}, 5000); }

现在,我想从wheee()函数外部清除间隔。我怎样才能做到这一点?

我还想从外面再次运行间隔。如何?

4

3 回答 3

2

好吧,按照您现在获得代码的方式,它可能会正常工作,因为您没有使用var.

只要您以某种方式从setInterval()您那里导出返回值就可以了。您可以使该变量显式全局化(比隐式更好),或者让您的“wheee”函数将值返回给它的调用者。

于 2012-10-13T20:41:29.497 回答
2

全局变量并不危险,但如果您只有一个滑块,则一种很好的编码方式是使用对象文字来模拟单例对象。

var Slider= {
    slider: null,
    Start: function(i) {
        this.slider = setInterval(function() {
            // Slider code
            console.log('running: ' + i);
            i++;
        }, 1000);
    },
    Stop: function() {
        window.clearTimeout(this.slider);
    }
};

Slider.Start(1); // Start the slider
Slider.Stop(); // Stop the slider
于 2012-10-13T21:38:58.737 回答
1

将 的范围设置slideee为超出wheee

使用对象以保持全局范围清洁。

于 2012-10-13T20:42:39.847 回答