现在的当前问题是我更改了从答案中获得的功能,但是上一个功能不起作用。

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/

10-13 03:11