Javascript AJAX:节点范围

时间:2018-05-06 10:27:38

标签: javascript ajax 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]没有定义。 我不知道该怎么做,请帮助我。

1 个答案:

答案 0 :(得分:0)

在for循环中,在第一行复制“i”, 让j = i; 然后,使用“j”来访问元素,而不是使用“i”。如果它有帮助