如何在javascript中添加onclick的参数?

mre*_*345 1 javascript arguments onclick

基本上,当按下一个按钮时,我想要一个参数提供它,但这不起作用:

var button = document.getElementById("button");
button.onClick = doThis(arg);
Run Code Online (Sandbox Code Playgroud)

但这确实有效(没有参数):

var button = document.getElementById("button");
button.onClick = doThis;
Run Code Online (Sandbox Code Playgroud)

第一个示例无法正常工作的原因是因为函数自动运行而不等待单击.

如何在Click上提供参数?

T.J*_*der 5

首先,请注意onclick,不是onClick.两者都适用于主流浏览器,但前者是正确的大小写.(请参阅HTML规范中的此处此处,包括代码示例.)

你有几个选择:

  1. 用途Function#bind:

    button.onclick = doThis.bind(button, arg);
    
    Run Code Online (Sandbox Code Playgroud)

    Function#bind创建一个新函数,在调用时,将调用具有特定this值的原始函数(button在我们的例子中是第一个参数)和您给它的任何参数(后跟调用新函数的任何参数).

  2. 使用包装函数:

    button.onclick = function() { doThis(arg); };
    
    Run Code Online (Sandbox Code Playgroud)

    在上述范围内,但是,thisdoThis不会按钮.如果你想要它,你可以使用Function#call:

    button.onclick = function() { doThis.call(button, arg); };
    // or
    button.onclick = function() { doThis.call(this, arg); };
    
    Run Code Online (Sandbox Code Playgroud)

    Function#call调用一个函数,指定this要使用的值,以及传递给它的参数.