0

私は自分の問題に対する答えを見つけるのに苦労しています。次のボタンと前のボタンがある単純なスライドショーがありますが、前のボタンを押すと最初の画像で停止します。最初の画像から最後に移動したいのですが、正しい結果が見つかりません。これは私が持っているものです:

window.onload = function () {
    var listNode = $("image_list");
    var captionNode = $("caption");
    var imageNode = $("image");

    var links = listNode.getElementsByTagName("a");

    // Process image links
    var i, linkNode, image;
    var imageCache = [];
    for (i = 0; i < links.length; i++) {
        linkNode = links[i];

        // Preload image and copy title properties
        image = new Image();
        image.src = linkNode.getAttribute("href");
        image.title = linkNode.getAttribute("title");
        imageCache.push(image);
    }

    //next button handler
    var nextButton = $("next");
    var imageCounter = 0;
    nextButton.onclick = function () {
        imageCounter = (imageCounter + 1) % imageCache.length;
        image = imageCache[imageCounter];
        imageNode.src = image.src;
        captionNode.firstChild.nodeValue = image.title;
    }

    //previous button handler
    var prevButton = $("previous");
    var imageCounter = 0;
    prevButton.onclick = function () {
        imageCounter = (imageCounter - 1) % imageCache.length;
        image = imageCache[imageCounter];
        imageNode.src = image.src;
        captionNode.firstChild.nodeValue = image.title;
    }
4

1 に答える 1

0

これが私がすることです(構文については完全にはわかりません):

//previous button handler
var prevButton = $("previous");
var imageCounter = 0;
prevButton.onclick = function () {
    imageCounter = (imageCounter - 1) % imageCache.length;

    //------- INSERTED CODE --------//
    imageCounter = imageCounter >= 0 ? imageCounter : imageCache.length - 1 ; //Meaning you've reached the first image and want to go to the last
    //------- INSERTED CODE --------//

    image = imageCache[imageCounter];
    imageNode.src = image.src;
    captionNode.firstChild.nodeValue = image.title;
}

説明:

したがって、 を設定した後imageCounter、その値を確認します。ゼロ以上の場合は、値を保持します。そうでない場合(つまり、最後の画像に移動したい場合)、その値をimageCacheマイナス1の長さに設定し、配列インデックスが0からカウントを開始するのを見てください。:)

于 2013-05-30T13:58:42.000 に答える