-1

我有一种情况,我需要以 test1 ,test2 形式创建动态变量。我知道应该使用数组或对象索引来完成,但不知何故我无法解决问题。我有一个 silder 并在多个地方使用它。

用于silder的Js:

 //code for slider 1
    var sliders1 = [];
    jQuery('.slider_1').each(function() {   
    sliders1.push(new Slider(this))
  })

 //code for slider 2
var sliders2 = [];
jQuery('.slider_2').each(function() {
sliders2.push(new Slider(this))
})


    var Slider = function() { this.initialize.apply(this, arguments) }
    Slider.prototype = {
    initialize: function(slider) {
    this.ul = slider.children[0]
    this.li = this.ul.children

    // make <ul> as large as all <li>’s
    this.ul.style.width = (this.li[0].clientWidth * this.li.length) + 'px'

    this.currentIndex = 0
    },

    goTo: function(index) {
    // filter invalid indices
    if (index < 0 || index > this.li.length - 1)
    return

    // move <ul> left
    this.ul.style.left = '-' + (100 * index) + '%'

    this.currentIndex = index
    },

    goToPrev: function() {
    this.goTo(this.currentIndex - 1)
    },

    goToNext: function() {
    this.goTo(this.currentIndex + 1)
    }
    }

现在的情况是我需要让它动态化。这是我到目前为止所尝试的。我可以制作silders1,sliders2吗?这样我就可以根据上面提到的事情运行它

 //slider count
 var count= jQuery("div[id*='sliders']").length;

 var silders = {};
for( var i=1; i <= count;i++){

    sliders[i] = [];
    var class1 = '.silder_'+i;
    jQuery(class1).each(function() {    
    sliders[i].push(new Slider(this))
});
}

在我的 HTml 中,它被称为

//suppose for first silder

<a href="javascript:sliders1[0].goToNext()">  for go next buttton

请帮我解决一些问题。我有点困惑在这里。

谢谢!!!

4

2 回答 2

1

您需要初始化滑块:

var sliders = {};

否则,该行

sliders[i] = [];

将导致异常,因为滑块未定义。

于 2014-09-11T17:24:50.340 回答
0

您可以尝试遍历从 开始的数字1,直到找不到该类的元素。另外,不要忘记先声明sliders数组。

像这样的东西:

var n = 1;
var sliders = [];

while($('.slider_'+n).length > 0)
{
    sliders[n] = [];
    $('.slider_'+n).each(function() {
        sliders[n].push(new Slider(this));
    });
    n++;
}
于 2014-09-11T17:27:21.133 回答