现在的当前问题是我更改了从答案中获得的功能,但是上一个功能不起作用。
function getPrev(currPhotoId) {
var i = currPhotoId - 1;
i %= album.length;
while ( album[i].disabled ) {
i--;
i %= album.length;
}
return i;
}
只要大于0,输出就起作用
TypeError: album[i] is undefined
undefined = "0"
while ( album[i].disabled )
最佳答案
以下逻辑非常简单。诀窍是保持迭代直到找到未禁用的迭代,然后在到达终点时使用模数(%
)执行循环。
function getNext() {
var i = this.currPhotoId + 1;
i %= this.album.length;
while ( this.album[i].disabled ) {
i++;
i %= this.album.length;
}
return this.album[i];
}
function getPrev() {
var i = this.currPhotoId - 1;
i %= this.album.length;
while ( this.album[i].disabled ) {
i--;
i %= this.album.length;
}
return this.album[i];
}
只要确保至少有一个启用,否则它将无限循环。 :)
关于javascript - 获取未禁用的下一个对象ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9572937/