0

如何根据来源使用 vanilla javascript + regEx 删除图像元素?

我正在使用 Web 应用程序阅读 RSS 提要。如果某些图像元素的来源包含“评论”一词,我想删除它们。

最好在将 rss 提要呈现到页面之前对其进行编辑(只是从 http 请求中提取,并且仍然在“字符串”中)。

更新:感谢您的回复。在每篇文章的最底部,它们都包含一个评论链接……这是我想要删除的。这是每篇文章最后的代码:

<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ADDRESS/FEED"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/[ADDRESS]/[FEED]" /></a>

此外,每篇文章的 [feed] 值都会发生变化。那么检查'comments'这个词或检查源是否以x开头会更好吗?

4

3 回答 3

2
var images = document.getElementsByTagName('img');
for (var i = 0; i < images.length; i++) {
    var img = images[i];
    if (img.src.indexOf('comments') > 0) {
       var link = img.parentNode;
       link.parentNode.removeChild(link);
    }
}
  • 第 1 行:获取页面上所有图像元素的列表
  • 第 2 行:遍历列表,删除那些 src 中包含“comments”一词的人。这是通过调用indexOf任何字符串对象的方法来完成的。详细在这里
于 2012-11-15T03:09:18.867 回答
0

你可以试试这个

var imgs=document.images;
for(i=0;i<imgs.length;i++)
    if(imgs[i].src.test('comments'))
        imgs[i].parentNode.parentNode.removeChild(imgs[i].parentNode);​

演示

于 2012-11-15T03:25:14.643 回答
0

感谢您的回复。lins05 建议了一些我稍微调整过的代码。注意:下面的代码没有删除元素或其父元素,而是简单地隐藏了元素。

    var images = document.getElementsByTagName('img');
    for (var i = 0; i < images.length; i++) {
        var img = images[i];
        if (img.src.indexOf('comments') > 0) {
            img.style.display = "none";
        }
    }

RSS 提要的文章列表存储在页面上的模型中。将评论从模型中剔除会更理想。但是当前的“每次文章出现在页面上时都隐藏元素”的方法效果很好:)

于 2012-11-15T03:25:17.373 回答