Javascript 如何获取缺少alt/title的图像行号。。?

Javascript 如何获取缺少alt/title的图像行号。。?,javascript,html,regex,Javascript,Html,Regex,我正在使用一个javascript函数,该函数使用正则表达式来获取没有alt/title属性的图像列表: function AltTitle(aSourceHTML, aResultField) { try { regexp = /<img((?:(?!alt)[^<>])*)>/gim; var vArray = aSourceHTML.match(regexp); var vLinks = vArray.join("\n\n");

我正在使用一个javascript函数,该函数使用正则表达式来获取没有alt/title属性的图像列表:

function AltTitle(aSourceHTML, aResultField) {
  try {
  regexp = /<img((?:(?!alt)[^<>])*)>/gim;
      var vArray = aSourceHTML.match(regexp);
      var vLinks = vArray.join("\n\n");
      aResultField.value = vLinks;
  } catch (err) {
      alert("No Images Found");
  }
}
函数AltTitle(aSourceHTML,aResultField){
试一试{
regexp=//gim;
var vArray=aSourceHTML.match(regexp);
var vLinks=vArray.join(“\n\n”);
aResultField.value=vLinks;
}捕捉(错误){
警报(“未找到图像”);
}
}

是否有任何方法可以获取图像列表中的行号?

尝试使用DOM来获取图像

var imgs = [].filter.call(document.images, function(img) {
  return !img.alt && !img.title;
});
这将获取所有没有
alt
title
属性或为空的图像,但它不会告诉您图像位于哪一行。试着用它来找出答案。

我会说“小马他来了”,但这似乎更多的是处理纯文本而不是实际的HTML


我这样做的方式是首先在换行符上拆分整个内容,然后循环每一行并针对它运行正则表达式。由于您要遍历这些行,只需打印出当前的迭代器值,就可以得到行号。

如果您已经在一个变量中包含了源代码,您可以按换行符将其拆分,然后针对每一行运行正则表达式

function AltTitle(aSourceHTML, aResultField) {
    aSourceHTML = aSourceHTML.split('\n');

    for (var i = 0; i < aSourceHTML.length; i++ {
        // run your regex against aSourceHTML[i]...
    }
}
函数AltTitle(aSourceHTML,aResultField){
aSourceHTML=aSourceHTML.split('\n');
对于(变量i=0;i
如果您试图对特定页面(例如您所在的页面)执行此操作,则可以对其执行ajax请求,然后通过换行符将其拆分并运行。尝试在控制台的堆栈溢出上运行以下代码。它将显示此页面的HTML,并带有行号

$.get(window.location, function(data){
    data = data.split('\n');

    for (var i = 0; i < data.length; i++) {
        console.log('line ' + i, data[i]);
    }
});
$.get(窗口、位置、函数(数据){
data=data.split('\n');
对于(变量i=0;i
但是,除非你试图用javascript编写一个工具,否则你应该直接使用它。它会为你找到任何没有alts/标题的图像


编辑:写了一个如何在JSFIDLE上工作的示例:

请问,这是如何检索图像的行号的?哦,最后没有捕捉到这一部分。不,没有。你是指HTML文件中的行号吗?我强烈建议使用类似jQuery的过滤函数来收集和处理图像标记。问题是什么识别行号的目的?@elclars在源代码中查找行号并更正行号,也许?我会使用它,除非OP实际上正在尝试构建类似的东西。我尝试了以下代码…但仍然没有得到输出..“函数Alttitle(aSourceHTML,aResultField){aSourceHTML=aSourceHTML.split('\n'));regexp=//gim;for(var i=0;i