javascript - 输入 addEventListener 发生更改时未触发

标签 javascript html node.js webpack addeventlistener

我有一个输入来上传图像。

html

<main>
    <input id="hs-p" type="file" accept="image/*" capture="camera">
</main>

<script type="text/javascript">
    let hsp = new HPS();
</script>

我想监听此输入何时发生变化(当有人向其中添加图像时)。

js

let imageInput = null;

class HSP {       
    constructor() {

        this.imageInput = document.getElementById('hs-p');

        if (this.imageInput) {
            this.imageInput.addEventListener("change", this.uploadImage());
        }
   }

    uploadImage() {
        console.log("upload image", this.imageInput);
    }
}

module.exports = HSP;

当有人添加图像时,它应该调用 uploadImage 回调。但是,此函数仅在页面加载时触发一次,并且当我将图像添加到输入或更改输入图像时永远不会触发。

我使用 Node 和 webpack 输出上述自定义库/sdk,然后将其导入到我的 html 中。

最佳答案

将您的事件更改为:

this.imageInput.addEventListener("change", () => this.uploadImage());

或者这个:

this.imageInput.addEventListener("change", this.uploadImage.bind(this));

您正在做的是调用 uploadImage 并将结果传递给监听器。您想要将引用传递给监听器。

关于javascript - 输入 addEventListener 发生更改时未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50683026/

相关文章:

javascript - 创建鼠标选择框

javascript - Knockout Js - 将单个项目从 json 数组绑定(bind)到元素

javascript - 为什么我的 SVG 的填充颜色在悬停时没有改变?

python - 生成具有明确终点的子进程

javascript - React 组件生命周期调用顺序

html - 如何在 React 中检测图像映射中的 onClick 区域标签

html - Fuelux,如何固定转发器列的宽度

javascript - 管理socket.io中的用户

javascript - 操作无法使用 REST 进行,但可以以其他方式进行

javascript - 如果提取的 TXT 不包含某个单词,我如何告诉 imacros 转到某个 url?