我有这个功能:
function toggleAgenteMarkerSingolo(i) {
console.log(lines_agenti); //the console show the array
console.log(lines_agenti[i]); //the console show me undefined
if (!lines_agenti[i].getVisible()) {
lines_agenti[i].setVisible(true);
visible = true;
} else {
lines_agenti[i].setVisible(false);
visible = false;
}
return visible;
}
就像你在代码中看到的那样,第一个" console.log"告诉我数组的内容,但第二个给我未定义。
显然,函数中的以下代码不起作用。
这是我调用函数的地方
checkbox.addEventListener('click', (function(i) {
console.log(i);
visible = toggleAgenteMarkerSingolo(i);
if(visible == true){
//do stuff
}else{
//do stuff
}
})(i));
这个是在另一个函数中,我使用DOM创建复选框。
阵列" lines_agenti"在开头被定义为全局变量:
<script>
var lines_agenti = [];
[...]
你能帮帮我吗?非常感谢你。
答案 0 :(得分:0)
这里的代码
checkbox.addEventListener('click', (function(i) {
console.log(i);
visible = toggleAgenteMarkerSingolo(i);
if(visible == true){
//do stuff
}else{
//do stuff
}
})(i));
基本上是这样做的:
(function(i) {
console.log(i);
visible = toggleAgenteMarkerSingolo(i);
if(visible == true){
//do stuff
}else{
//do stuff
}
})(i)
checkbox.addEventListener('click', undefined);
您正在运行该功能并将其返回的功能分配给该功能。你没有调用onclick函数。解决它的一种方法是返回一个函数
checkbox.addEventListener('click', (function(i) {
return function () {
console.log(i);
visible = toggleAgenteMarkerSingolo(i);
if(visible == true){
//do stuff
}else{
//do stuff
}
}
})(i));