我写了这个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]没有定义。
我不知道该怎么做,请帮助我。
答案 0 :(得分:0)
在for循环中,在第一行复制“i”, 让j = i; 然后,使用“j”来访问元素,而不是使用“i”。如果它有帮助