Javascript删除事件监听器

时间:2020-02-03 14:16:28

标签: javascript

我有一个照片查看器html页面,用户可以在其中以幻灯片形式查看本地文件夹中的图像。我有一个复选框,用户可以在其中选择他们正在查看的图像以用于以后的操作。用户可以选择一个图像,转到下一个图像,也选择该图像,依此类推。等等。当我加载一个新图像时,我有一个变量img_path,该变量传递给复选框的事件侦听器。

我的问题是,当我加载新图像时,不会删除带有旧img_path的旧事件监听器,而是保留每个事件监听器。

例如,当我选择然后取消选择幻灯片放映中的第一张图像时,一切正常,控制台输出为

Selecting images/00001.jpg
Deselecting images/00001.jpg

但是当我转到第二张图像然后选择并取消选择输出时,

Selecting images/00001.jpg
Selecting images/00002.jpg
Deselecting images/00001.jpg
Deselecting images/00002.jpg

这是我的代码:

// This is called every time the user hits the next button
function set_slide(img_id, select_box) {

    ...

    let img_path = "images/" + img_id + ".jpg"

    function select_event() {
        if(select_box.checked) {
            console.log("Selecting " + img_path)
            select_img(img_path);
        }
        else {
            console.log("Deselecting " + img_path)
            deselect_img(img_path);
        }
    }

    select_box.removeEventListener("click", select_event, false);
    select_box.addEventListener("click", select_event, false);
}

select_box的来源:

// This only happens once when the slideshow page is created
let select_box = document.createElement('input');
select_box.type = "checkbox"

我正在尝试使用removeEventListener来删除带有旧img_path变量的旧事件监听器,但是我一定做错了。

0 个答案:

没有答案
相关问题