div滑块超出边界(数组长度)

时间:2018-11-13 15:15:52

标签: javascript slider

我的div滑块忽略了我所做的边框,找不到错误。 附言右/左函数在标记属性onclick:'slider.right()'中调用。我只是在学习,我知道代码的优雅远非理想。

    let elArr = [];

let pusher = elArr.push(document.querySelectorAll('#scr>div'));
let elements = Array.from(elArr[0]);
let slider = {
  frame: 0,
  set: function(element){
    var container = document.getElementById('scr');
    container = element.style.visibility='visible';
  },

  init: function(){
    this.set(elements[this.frame]);
  },

  left: function(){
    elements[this.frame].style.visibility='hidden';
    this.frame--;
    if(this.frame<0)
    this.frame = elements.length - 1;
    this.set(elements[this.frame]);
  },

  right: function(){
    elements[this.frame].style.visibility='hidden';
    this.frame++;
    if(this.frame>elements.length)
    this.frame = 0;
    this.set(elements[this.frame]);
  }

};

window.onload = function(){
  slider.init();
}

1 个答案:

答案 0 :(得分:0)

一个好人刚刚帮了我,所以情况不正确

if(this.frame>elements.length)

当当前值大于数组中元素的数量时,它会丢弃``帧''值,但考虑到事实,当帧等于elements时,元素的索引从0开始。变为未定义,因此帧值不会下降。

因此,我们需要将条件更改为比较==或使其变为> =; 决定向用户:186999致谢