如何在addEventListener中使用函数传递参数?
以传统方式添加事件侦听器:
function getComboA(sel) { var value = sel.options[sel.selectedIndex].value;
}
<select id="comboA" onchange="getComboA(this)">
<option value="">Select combo</option>
<option value="Value1">Text1</option>
<option value="Value2">Text2</option>
<option value="Value3">Text3</option>
</select>
但是我想适应addEventListener的方式:
productLineSelect.addEventListener('change',getSelection(this),false);function getSelection(sel){
var value = sel.options[sel.selectedIndex].value;
alert(value);
}
它不起作用,因为我无法将getSelection()中的任何参数作为addEventListener方法中的第二个参数传递?据我所知,我只能使用没有括号的函数名。
任何的想法?
回答:
无需传递任何内容。用于的函数addEventListener
将自动this
绑定到当前元素。只需this
在您的函数中使用:
productLineSelect.addEventListener('change', getSelection, false);function getSelection() {
var value = this.options[this.selectedIndex].value;
alert(value);
}
如果要将任意数据传递给函数,请将其包装在您自己的匿名函数调用中:
productLineSelect.addEventListener('change', function() { foo('bar');
}, false);
function foo(message) {
alert(message);
}
如果你想设置的值this
手动,您可以使用该call
方法来调用该函数:
var self = this;productLineSelect.addEventListener('change', function() {
getSelection.call(self);
// This'll set the `this` value inside of `getSelection` to `self`
}, false);
function getSelection() {
var value = this.options[this.selectedIndex].value;
alert(value);
}
以上是 如何在addEventListener中使用函数传递参数? 的全部内容, 来源链接: utcz.com/qa/435027.html