与params的onclick调用

onclick call with params

本文关键字:调用 onclick params      更新时间:2023-09-26

我有一个函数,如下所示:

menu[0].onclick = function() {
    filters.reset_all();
    clients.get();
}

因此,当用户单击第一个菜单元素时会调用它。现在我需要从另一个地方称之为,我所做的是:

    if (li.onclick) { //li and menu[0] above are the same
        li.onclick.call();
    }

而且效果很好。

但现在我需要将一些params传递给onclick函数。我尝试过这个.call(some_param);,但onclick中的arguments数组是空的。

我做错了什么?

编辑:更改为:

menu[0].onclick = function(arg) {
    console.log(arg);
    filters.reset_all();
    clients.get();
}

li.onclick.call(li,param);

仍然没有

.call()的第一个参数是this指针的值。第二个、第三个等参数将传递给函数。如果您要显式设置this指针,则只需要使用.call()。否则,您可以直接调用函数li.onclick()

事件处理程序通常由系统调用,当这种情况发生时,它们会作为第一个参数传递给事件对象。如果您想要一个使用不同参数的函数,则应该为此创建自己的函数,而不要使用事件处理函数。如果需要,您的事件处理程序也可以调用其他函数。

menu[0].onclick = function() {
    myFunc("aaa");
}
function myFunc(arg1) {
    // do whatever here
    filters.reset_all();
    clients.get();
}
if (li.onclick) {
    myFunc("bbb");
}

它应该是

call(object, param1, param2, param3...);

在你的情况下,你可以写

li.onclick.call(li, param1);

call()的第一个参数是上下文(在本例中为this),其余参数按顺序进入参数数组。如果使用apply()而不是调用,则只有两个参数:apply(this, arguments_array)