Javascript:函数中的数组,未定义的单个元素

时间:2017-11-06 18:21:26

标签: javascript arrays function

我有这个功能:

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 = [];
  [...]
你能帮帮我吗?非常感谢你。

我附上了控制台的屏幕。console

1 个答案:

答案 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));