Javascript 如何在AddEventListener上的函数中添加参数
我正在尝试创建一个带有一些层的Web映射应用程序,我的想法是我有一些复选框,当我单击它们时,层会被添加或删除(我已经这样做了),但是有很多层,当然还有很多代码,我意识到有了一个函数,我可以完成这项工作,但经过一个又一个小时的工作,它仍然不起作用,我准备放弃: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
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
绑定参数,或传递一个函数表达式,该表达式环绕函数并使用参数调用函数