0

チェックボックスをオンにして一連の画像を選択できるプログラムを作成しました。画像の URL と代替テキストは 2 つの配列に格納されます。HTML ページの av ボタンをクリックすると、window.opener で配列を呼び出す新しいウィンドウが開きます。

新しいウィンドウを閉じるときに、配列を空にしたいと思います。それ以外の場合、最初のラウンドで選択された写真は、2 回目に開いたときにスライドショーに表示されます。この方法で配列を空にできることは理解しています: array.length= 0;

しかし、どこにコードを追加すればよいでしょうか? 私はかなり迷っています。コードを貼り付けています。おそらく誰かが手を差し伸べてくれます。

var imgUrlList = [], imgTextList = [], //These arrays need to be emptied
    windVar = null;

function init() {
    var tags, i, openWindow;

    tags = document.getElementsByClassName("unmarkedImg");
    openWindow = document.getElementById("slideShowBtn");
    openWindow.onclick = savePicsForSlideshow;
    for (i = 0; i < tags.length; i++) {
        tags[i].parentNode.onmouseover = showLargePict;
        tags[i].parentNode.onmouseout = hideLargePict;
    }
}

window.onload = init;

function showLargePict() {
    var largePictTagDiv = this.getElementsByClassName("innerBox")[0];
    var largePictTagParentDiv = largePictTagDiv.parentNode;
    var imgTag = largePictTagParentDiv.getElementsByTagName('img')[0];
    var checkBoxlargePict = largePictTagDiv.getElementsByTagName('input')[0];

    if (checkBoxlargePict.checked)
        imgTag.className = "markedImg";
    else imgTag.className = "unmarkedImg";

    largePictTagDiv.style.visibility = "visible";
} // End showLargePict

function hideLargePict() {
    var largePictTag;
    largePictTag = this.getElementsByClassName("innerBox")[0];
    largePictTag.style.visibility = "hidden";
}


function savePicsForSlideshow() {
    var innerBoxes = document.getElementsByClassName("innerBox");

    for (i = 0; i < innerBoxes.length; i++) {
        checkBoxlargePict = innerBoxes[i].getElementsByTagName('input')[0];
        if (checkBoxlargePict.checked) {
            var imgTagSrc = innerBoxes[i].getElementsByTagName('img')[0].src;
            imgUrlList.push(imgTagSrc);
            var spanTagText = innerBoxes[i].getElementsByTagName('span')[0].innerHTML;
            imgTextList.push(spanTagText);
        }
    }

    if (imgTextList.length > 0) {
        newWindow(500, 600, "slideshow.htm");
    }

}

function newWindow(width, height, filename) {
    var windowProperties;
    windowProperties = "top=100,left=100,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=" + width + ",height=" + height;
    if (windVar != null) if (windVar.closed == false) windVar.close();
    windVar = window.open(filename, "", windowProperties);
}

私のプログラミングと英語の文法の欠点を許してください。私はjavascriptが初めてです。//ヘンリック、ヨーテボリ、スウェーデン。

4

2 に答える 2

0

savePicsForSlideshow 関数の開始時に、各配列を空にします。

imgUrlList.length = 0;
imgTextList.length = 0;
于 2013-05-18T20:48:11.313 に答える