0

我正在使用一个 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");
  }
}

有什么方法可以获取行号以及图像列表吗?

4

3 回答 3

1

尝试使用 DOM 来获取图像。

var imgs = [].filter.call(document.images, function(img) {
  return !img.alt && !img.title;
});

这将抓取所有没有alttitle属性或为空的图像,但它不会告诉您图像在哪一行。尝试使用http://validator.w3.org/找出答案。

于 2013-01-28T02:11:18.933 回答
0

如果您已经在变量中拥有源代码,则可以通过换行符将其拆分,然后针对每一行运行您的正则表达式。

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

    for (var i = 0; i < aSourceHTML.length; i++ {
        // run your regex against aSourceHTML[i]...
    }
}

如果您尝试对特定页面执行此操作,例如您所在的页面,您可以对其执行 ajax 请求,然后通过换行符拆分并运行它。尝试在控制台的 Stack Overflow 上运行以下代码。它将显示此页面的 HTML 以及行号。

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

    for (var i = 0; i < data.length; i++) {
        console.log('line ' + i, data[i]);
    }
});

但除非您尝试在 javascript 中为此编写工具,否则您应该只使用http://validator.w3.org/。它会为您找到任何没有替代/标题的图像。

编辑:写了一个如何在 jsfiddle 上工作的例子:http: //jsfiddle.net/c8X4K/

于 2013-01-28T02:52:30.213 回答
0

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

我这样做的方法是首先将整个内容拆分为换行符,然后遍历每一行并对其运行正则表达式。由于您正在遍历这些行,因此只需打印出当前的迭代器值,您就有了行号。

于 2013-01-28T02:11:27.363 回答