0

我创建了一个程序,您可以在其中通过选中复选框来选择一组图像。图像 URL 和替代文本存储在两个数组中。单击 HTML 页面上的 av 按钮时,您会打开一个新窗口,该窗口使用 window.opener 调用数组。

关闭新窗口时,我想清空数组。否则第一轮选择的图片在第二次打开时会显示在幻灯片中。我知道您可以通过这种方法清空数组: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 新手。//Henrik,瑞典哥德堡。

4

2 回答 2

0

您可以使用对象窗口的关闭属性检查窗口是否关闭

if(window.closed)
{
array.length = 0;
}
于 2013-05-18T21:02:39.797 回答
0

在 savePicsForSlideshow 函数的开头,清空每个数组。

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