我正在使用一个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");
}
}
有没有办法让行号和图像列表一起使用?
答案 0 :(得分:1)
尝试使用DOM来获取图像。
var imgs = [].filter.call(document.images, function(img) {
return !img.alt && !img.title;
});
这将抓取所有没有alt
或title
属性或为空的图像,但它不会告诉您图像所在的行。尝试使用http://validator.w3.org/找出它。
答案 1 :(得分:0)
我会说“The Pony He Comes”,但这似乎更多地处理纯文本而不是实际的HTML。
我这样做的方法是首先将整个事物拆分为换行符,然后循环遍历每一行并对其运行正则表达式。由于您正在遍历这些行,只需打印出当前的迭代器值,然后就可以获得行号。
答案 2 :(得分: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/。它会找到任何没有alts / titles的图像。
编辑:写了一个关于如何在jsfiddle上运行的示例:http://jsfiddle.net/c8X4K/