Javascript 计算页面上断开链接的数量

Javascript 计算页面上断开链接的数量,javascript,ajax,for-loop,Javascript,Ajax,For Loop,我编写了一个JavaScript来检测页面上断开的链接。如果有10个断开的链接,我想计算断开的链接,并提醒只有一次,而不是10次。如何调整代码以满足要求 function doCheck(i,href) { jQuery.ajax({ url: href, method: "HEAD", statusCode: { 404: function () { x ++; alert(x +'broken link foun

我编写了一个JavaScript来检测页面上断开的链接。如果有10个断开的链接,我想计算断开的链接,并提醒只有一次,而不是10次。如何调整代码以满足要求

function doCheck(i,href) {
jQuery.ajax({
    url: href,
    method: "HEAD",
    statusCode: {
        404: function () {
          x ++;
          alert(x +'broken link found');
          anchors[i].style.border='2px dotted red';
        },
        200: function() {
          anchors[i].style.border='2px dotted green';
    }
    }
});
}


var anchors = document.getElementsByTagName("a");
var x = 0;
for (var i=0; i<anchors.length; i++) {
var href = anchors[i].getAttribute('href');
doCheck(i,href);
}
函数多切克(i,href){
jQuery.ajax({
url:href,
方法:“头”,
状态代码:{
404:函数(){
x++;
警报(x+“发现断开链接”);
锚[i].style.border='2px点红色';
},
200:函数(){
锚[i].style.border='2px点绿色';
}
}
});
}
var archors=document.getElementsByTagName(“a”);
var x=0;

对于(var i=0;i计算已完成的请求数,如果已完成的请求数等于已发送的请求数,则所有锚都已处理,您可以发出警报

var anchors = document.getElementsByTagName("a");
var x = 0; var y = 0;
for (var i = 0; i < anchors.length; i++) {
    var href = anchors[i].getAttribute('href');
    doCheck(i,href);
}

function doCheck(i,href) {
  jQuery.ajax({
    url: href,
    method: "HEAD",
    statusCode: {
      404: function () {
        x++;
        anchors[i].style.border='2px dotted red';
      },
      200: function() {
        anchors[i].style.border='2px dotted green';
      }
    }
  }).complete(function () {
    if (y++ === anchors.length) {
      alert(x +'broken link found');
    }
  });
}
var-anchors=document.getElementsByTagName(“a”);
变量x=0;变量y=0;
对于(var i=0;i
计算已完成的请求数,如果已完成的请求数等于已发送的请求数,则所有锚都已处理,您可以发出警报

var anchors = document.getElementsByTagName("a");
var x = 0; var y = 0;
for (var i = 0; i < anchors.length; i++) {
    var href = anchors[i].getAttribute('href');
    doCheck(i,href);
}

function doCheck(i,href) {
  jQuery.ajax({
    url: href,
    method: "HEAD",
    statusCode: {
      404: function () {
        x++;
        anchors[i].style.border='2px dotted red';
      },
      200: function() {
        anchors[i].style.border='2px dotted green';
      }
    }
  }).complete(function () {
    if (y++ === anchors.length) {
      alert(x +'broken link found');
    }
  });
}
var-anchors=document.getElementsByTagName(“a”);
变量x=0;变量y=0;
对于(var i=0;i
基于AvcS响应


您需要使用一个全局变量来保存断开链接的计数,并且当代码发现任何404增加该全局变量时,在循环之后,您可以显示带有警报的计数器,或者根据AvcS响应将值放入字段中


你需要使用一个全局变量来保存断开链接的计数,当你的代码发现任何404增加这个全局变量时,在循环之后,你可以显示带有警报的计数器或将值放入字段中,这将满足你的要求。让你的x计数器计数,当你的循环在最后一个锚点上时,它将我将以断开链接的计数发出警报

var anchors = document.getElementsByTagName("a");
var x = 0;
for (var i=0; i<anchors.length; i++) {
var href = anchors[i].getAttribute('href');
doCheck(i,href,anchors[i]);
If ( i === anchors.length - 1  ) { 
  SetTimeout( function() {
   alert(x +' broken link found');
   }, 4000);

}
}

function doCheck(i,href, current_el) {
jQuery.ajax({
url: href,
method: "HEAD",
statusCode: {
    404: function () {
      x++;
      console.log(x);
      current_el.style.border='2px dotted red';
    },
    200: function() {
      current_el.style.border='2px dotted green';
     }
} 
});
}
var-anchors=document.getElementsByTagName(“a”);
var x=0;

对于(var i=0;i这将满足您的要求。让您的x计数器计数,当您的循环位于最后一个锚点上时,它将以断开链接的计数发出警报

var anchors = document.getElementsByTagName("a");
var x = 0;
for (var i=0; i<anchors.length; i++) {
var href = anchors[i].getAttribute('href');
doCheck(i,href,anchors[i]);
If ( i === anchors.length - 1  ) { 
  SetTimeout( function() {
   alert(x +' broken link found');
   }, 4000);

}
}

function doCheck(i,href, current_el) {
jQuery.ajax({
url: href,
method: "HEAD",
statusCode: {
    404: function () {
      x++;
      console.log(x);
      current_el.style.border='2px dotted red';
    },
    200: function() {
      current_el.style.border='2px dotted green';
     }
} 
});
}
var-anchors=document.getElementsByTagName(“a”);
var x=0;

对于(var i=0;iIt不发出任何警报@AvcSIt不发出任何警报@AvcSvar x始终返回0。在打印x变量的404函数中执行console.log。如果它打印计数,则表示上面的警报发生得太快。只需使用setTimeout函数包装上面的警报,并将其设置为4000超时。这应该是我有足够的时间让ajax请求返回。或者它可能需要比4秒多一点的时间。必须测试它。var x始终返回0。在404函数中执行console.log以打印x变量。如果它打印计数,则表示上面的警报发生得太快。只需使用setTimeout函数包装上面的警报并设置它看起来像是4000超时。这应该给ajax请求足够的时间返回。或者它可能需要比4秒多一点的时间。必须测试它。