删除基于源的图像元素

时间:2012-11-15 02:55:00

标签: javascript regex windows-8

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

我正在阅读带有网络应用的RSS源。我想删除某些图像元素,如果它们的源包含单词“comments”。

最好在将rss Feed渲染到页面之前对其进行编辑(仅从http请求中提取,仍然在'string'中)。

更新: 谢谢你的回复。在每篇文章的最底部,它们都包含一个评论链接......这就是我要删除的内容。 以下是每篇文章最后的代码:

<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开头是否更好?

3 个答案:

答案 0 :(得分: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有“评论”字样的人。这是通过调用任何字符串对象的indexOf方法完成的。 Detailed here

答案 1 :(得分: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);​

DEMO

答案 2 :(得分: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 feed的文章列表存储在页面上的模型中。将评论从模型中删除会更为理想..但是,每当文章在页面上时“隐藏元素”的当前方法都可以正常工作:)