Javascript 发送';这';从文件上传元素到js函数

Javascript 发送';这';从文件上传元素到js函数,javascript,Javascript,我正在上传图像。只要点击一个可见按钮,它就会触发隐藏的输入表单(它是隐藏的,因为它很难看),它会要求用户选择一个文件。当做出选择时,它会触发onChange=“imagePreview(this);”函数,然后该函数与“this”元素一起工作 function imagePreview (this) { var files = this.files; var file = files[0]; ... } 我试图做的是摆脱在html元素中插入onChange=“imagePre

我正在上传图像。只要点击一个可见按钮,它就会触发隐藏的输入表单(它是隐藏的,因为它很难看),它会要求用户选择一个文件。当做出选择时,它会触发
onChange=“imagePreview(this);”
函数,然后该函数与“this”元素一起工作

function imagePreview (this) {
   var files = this.files;
   var file = files[0];
   ...
}

我试图做的是摆脱在html元素中插入
onChange=“imagePreview(this);”
,因此我需要从javascript或jQuery中调用此元素。有人可以给我一个提示。

您可以通过jQuery附加事件侦听器

$(function() {
    $("that.input").change(imagePreview); 
    //this will send this as parameter to imagePreview function
});

不要在函数中传递
参数,否则它将指向
窗口

function imagePreview (elem) {
   var files = elem.files;
   var file = files[0];
   ...
}
现在,在绑定事件的位置使用
this

onChange="imagePreview(this)"

只需获取元素并使用addEventListener,或jQuery的。更改方法来设置事件侦听器

HTML


看看OP到底想要什么?去掉html中的onchange属性
<input type="file" id="myfile" />
function imagePreview(){
   //The context of the function will
   //be the element that triggered it
   var files = this.files;
   var file = files[0];    
}

var fileCtrl = document.getElementById("myfile");
fileCtrl.addEventListener("change",imagePreview);
//jQuery
$("#myfile").change(imagePreview);