为什么我的JS函数执行onload而不是onchange?

Joe*_*Min 1 javascript jquery input javascript-events

这是代码:

window.onload = function() {
    oldonload && oldonload();

    function test() {
        alert("meh");
    }    

    $('input[type=file]').change(test());
}
Run Code Online (Sandbox Code Playgroud)

代码非常简单,test()只有在input[type=file]更改时才会调用.但是test()每当我的页面加载时都会被调用.

这里发生了什么?只有当用户与输入元素交互时,我才会如何执行该功能?

Arg*_*g0n 6

您正在此行上调用方法:

$('input[type=file]').change(test());
Run Code Online (Sandbox Code Playgroud)

将其更改为:

$('input[type=file]').change(test);
Run Code Online (Sandbox Code Playgroud)

如果要将参数传递给test:

var myVar = 5;
$('input[type=file]').change(function () {
   test(myVar); 
});
Run Code Online (Sandbox Code Playgroud)