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上提供参数?
首先,请注意onclick,不是onClick.两者都适用于主流浏览器,但前者是正确的大小写.(请参阅HTML规范中的此处和此处,包括代码示例.)
你有几个选择:
用途Function#bind:
button.onclick = doThis.bind(button, arg);
Run Code Online (Sandbox Code Playgroud)
Function#bind创建一个新函数,在调用时,将调用具有特定this值的原始函数(button在我们的例子中是第一个参数)和您给它的任何参数(后跟调用新函数的任何参数).
使用包装函数:
button.onclick = function() { doThis(arg); };
Run Code Online (Sandbox Code Playgroud)
在上述范围内,但是,this在doThis不会按钮.如果你想要它,你可以使用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要使用的值,以及传递给它的参数.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |