我有一个创建div的for循环。我想将外部SVG文件的内容放入每个创建的div中。所以我使用AJAX请求:使用AJAX从另一个文件的内容填充div
for (var i=0; i<12; i++) {
var newTile = document.createElement('div');
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) { newTile.innerHTML = xmlhttp.responseText; }
}
xmlhttp.open('GET','assets/svg/1001-1001.svg',true);
xmlhttp.send();
document.getElementById('myDiv').appendChild(newTile);
}
它似乎把内容放在最后创建的div,而不是其他的。我究竟做错了什么?
什么时候'xmlhttp.onreadystatechange'火?如果你尝试'var newTile = []'这样'newTile [i] = document.createElement('div');'然后'newTile [i] .innerHTML ='等等。 – surfmuggle
AJAX请求将异步运行,所以它不会设置innerHTML属性,直到请求从服务器返回。这意味着for循环将在第一个值从服务器返回之前运行全部12个循环。 – daniellepelley
@daniellepelley谢谢,这是有道理的。你能提出一个解决方案的答案吗? – Coop