我有一个函数,期望“this”作为参数传递,但我想传递一个不同的对象而不移动触发器函数,所以目前我有这个:
onclick="showCalendarControl(this);"
但我想这样做:
onclick="showCalendarControl(document.getElementById('somethingelse'));"
这不起作用,我想做一些不可能的事情吗?
答案 0 :(得分:0)
尝试使用.bind()
功能。 Docs
bind
的第一个参数将设置函数'this
参数(替换默认参数),所有其他参数在调用方法后转换为参数。
示例:
onclick="showCalendarControl.bind(this)" //the this-statement inside of showCalendarControl will be the specified one
onclick="showCalendarControl.bind(something, this);" //this will be passed as first argument to showCalendarControl
编辑:测试后,似乎.bind()
在onclick处理程序中不起作用。但是你最初的想法是有效的,或者至少我理解为你的问题(将document.getElementById
结果传递给你的方法)
function showCalendarControl(obj) {
obj.innerHTML = "YEY";
}
<body>
<div id="something" onclick="showCalendarControl(document.getElementById('somethingelse'));">Click Me</div>
<div id="somethingelse"></div>
</body>
如果要将参数绑定到函数的this
语句,可以尝试此操作(使用call()函数而不是初始绑定):
function showCalendarControl() {
this.innerHTML = "YEY";
}
<body>
<div id="something" onclick="showCalendarControl.call(document.getElementById('somethingelse'));">Click Me</div>
<div id="somethingelse"></div>
</body>