0

ソースに基づいて、バニラ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] の値は記事ごとに変わります。それでは、「コメント」という単語を確認するか、ソースが 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 に答える