0

スライダーを前後にナビゲートするために配列値を検索していて、未定義の値に関するロジックの穴に出くわしました。現状では、配列内の現在のスライドを検索し、配列内の位置に加算または減算し、その値が存在する場合は位置を更新します。ただし、配列内の値が存在しない場合(つまり、配列内に3つのオブジェクトがあり、スライダーが#4を検索しようとしている場合)、型エラーがスローされます。

「値が存在する場合は更新する」というより良い言い方が必要です。非常に単純なようですが、私は良い解決策を考えていません。

変数は簡単に削除できるとupdate思いますが、配列の値を一度調べて、本体クラスの更新で使用するために保存するのは良いことだと思います。意味がわかりますか?

以下のコードを参照していただき、ありがとうございます。

function slide(direction){

/* Get Current */

    var current = $bod.attr('class'),
        next,
        update;

/* Navigate */

    if (direction === 'right'){

        next = $current + 1;

    } else if (direction === 'left'){

        next = $current - 1;

    } else if (direction === 'home'){

        next = $home;
    }

/* Update */

    // Issue is here. If the next slide is undefined, everything crashes

    update = $slides[next].slide;

    // Was trying to address the issue with this line:

    if (update){

        $bod.removeClass(current).addClass(update);

        $current = next;
    }
}
4

2 に答える 2

1

代わりに境界を確認する必要があります。

if ((direction === 'right') && ($current < $slides.length - 1)){
  next = $current + 1;
} else if ((direction === 'left') && ($current > 0)){
  next = $current - 1;
} else if (direction === 'home'){
  next = $home;
}
于 2013-01-16T20:25:10.643 に答える
1

以下を試してください。

update = $slides[next] ? $slides[next].slide : false;
于 2013-01-16T20:23:26.847 に答える