Javascript 如何在AddEventListener上的函数中添加参数

Javascript 如何在AddEventListener上的函数中添加参数,javascript,function,addeventlistener,dom-events,Javascript,Function,Addeventlistener,Dom Events,我正在尝试创建一个带有一些层的Web映射应用程序,我的想法是我有一些复选框,当我单击它们时,层会被添加或删除(我已经这样做了),但是有很多层,当然还有很多代码,我意识到有了一个函数,我可以完成这项工作,但经过一个又一个小时的工作,它仍然不起作用,我准备放弃: function turnon(idlayer, layer) { var local = document.getElementById(layer);//verify whick checkbox is the one for th

我正在尝试创建一个带有一些层的Web映射应用程序,我的想法是我有一些复选框,当我单击它们时,层会被添加或删除(我已经这样做了),但是有很多层,当然还有很多代码,我意识到有了一个函数,我可以完成这项工作,但经过一个又一个小时的工作,它仍然不起作用,我准备放弃:

function turnon(idlayer, layer) {
  var local = document.getElementById(layer);//verify whick checkbox is the one for the layer
  if (local.checked == true) {
    map.addOverlay(layer);//an OpenLayers method to add the layer to the map
  } else {
    map.removeOverlay(layer);
  }
}
var wmsSector=document.getElementById('sector')//This is the checkbox
wmsSector.addEventListener("click", turnon);
问题是,我不知道如何在
addEventListener
处理程序中添加参数,我尝试了以下方法:

wmsSector.addEventListener("click",turnon('wmsSector',sector))

我非常感谢您能给我的任何帮助,因为现在应用程序可以正常工作,但我相信它可以更优雅。

我会更通用地附加侦听器,以便复选框提供要附加的覆盖的id或名称,例如

//用于测试
变量映射={
addOverlay:函数(层){
console.log(层+‘添加’);
},
removeOverlay:功能(层){
console.log(层+‘已删除’);
}
};
//打开或关闭图层
功能切换层(evt){
this.checked?map.addOverlay(this.value):map.removeOverlay(this.value);
}
//“将侦听器添加到每个层”复选框
window.onload=函数(){
[].forEach.call(document.querySelectorAll('.layerToggle'),函数(节点){
node.addEventListener('click',toggleLayer,false);
});
}
WMS扇区
植被

管理员边界
使用匿名函数

wmsSector.addEventListener("click",function(){
    turnon('wmsSector',sector);
})

使用
.Bind
绑定参数,或传递一个函数表达式,该表达式环绕函数并使用参数调用函数