Javascript AJAX : 节点作用域

Javascript AJAX : node scoping

我写了这段 JS 代码:

var abils = document.getElementsByName('aggiunta_abil');
for (let i = 0; i < abils.length; i++) {

  xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    alert(abils[i].parentNode.parentNode.innerHTML);

    if (xhttp.readyState == 4 || status == 200) {
      abils[i].parentNode.parentNode.innerHTML = this.responseText;
    }
  }

  var url = 'my url';

  if(abils[i].value != '') url = url + 'id_abil' + '=' + abils[i].value + '&';    
    xhttp.open('GET', url, true);
    xhttp.send();
  }
}

我的问题是警报标记正确地标记了节点的 innerHTML,但在它之后的 2 行告诉我未定义 abils[i]。即使我删除了 if 子句,只保留 2 条指令一条接一条,也没有任何变化:警报继续运行良好,但 abils[i].parentNode.parentNode.innerHTML = this.responseText; 没有。 我也尝试使用 jquery for ajax ,但没有任何变化:在成功函数中它说我没有定义 abils[i] 。 我不知道该怎么办,请帮帮我。

在你的for循环中,复制第一行的“i”作为, 设j=i; 然后,不使用“i”,而是使用“j”来访问 element.see(如果有帮助的话)