参见英文答案 >
JavaScript closure inside loops – simple practical example30个
我是新来使用AJAX,而我正在编写一个用户脚本,它会处理一个页面上的一些链接,并为每个链接发出AJAX调用.
for (var i = 0; i < linkList.length; i++)
{
$.ajax({
url: linkList[i].getAttribute("href"),cache: false
}).done(function( html )
{
var hasAppended = false;
if (html.indexOf('someStringOnGottenPage') != -1 && !hasAppended)
{
hasAppended = true;
var id = linkList[i].getAttribute("href").substring(linkList[i].getAttribute("href").indexOf('='));
$( "#links a[href*='" + id + "']" ).append(' THIS PAGE CONTAINS SPECIFIED DATA');
}
});
}
要简单地说,我有一个页面与链接列表.我希望遍历链接,并让AJAX处理每个链接页面的内容,并回报该页面是否包含指定的内容.
我所遇到的问题是[i]用于遍历linkList的值总是为6,而不应该是.我假设我需要传递一些数据,以便当.done终于触发时,它知道它的[i]值,当AJAX首次触发时,而不是[i]当.
如何确保.done知道当AJAX第一次调用时它的价值?