我有一个图像轮播/滑块,它具有获取下一个图像的功能:
getNext() {
this.i = this.i===this.Artwks.length ? this.i : (this.i + 1)%this.Artwks.length;
this.artworks.next(this.Artwks[this.i])
this.getSlide();
}
这很好用,并调用getSlide函数在数组中显示正确的图像。
我的getPrev()函数几乎完全相同,但
(this.i - 1)%this.Artwks.length;
似乎打破了它。
Artwks是一个数组,我是一个初始化为0的数字。这里发生了什么?
答案 0 :(得分:1)
你遇到的问题是以数字为模的负数将导致负数,从而导致负数指数未定义。
-1 % 10 === -1
答案 1 :(得分:1)
当i达到等于0的值时,i - 1等于-1,并且使用该索引可能会尝试到达一个给出错误的数组。尝试执行以下操作:
getPrev() {
this.i = this.i===this.Artwks.length ? this.i : this.i === 0 ? 1 : (this.i - 1 )%this.Artwks.length;
...
}
或
this.i = this.i===this.Artwks.length || this.i === 0? this.i : (this.i - 1 )%this.Artwks.length;
答案 2 :(得分:0)
我想到的可能是尝试添加一个if语句,只在你的数组大于0时才调用getPrev()当前它正在做你告诉它的事情,不是吗?
If(currDisplayPic > 0)
getPrev();
将它放入一个按钮,以便在需要时调用它
很抱歉我不得不在手机上编辑即时回复,过早按下我的帖子按钮..无论如何
我可能错误的是,我仍然喜欢编程JS和TS,但据我所知,数组可以很容易地计算,但是下降它需要知道它可以..不?