Скрипт Greasemonkey для поиска строк с определенными условиями

#image #replace #hyperlink #greasemonkey

#изображение #заменить #гиперссылка #greasemonkey

Вопрос:

Я пробовал несколько разных способов поиска строк в таблице, столбцы которой содержат определенную ссылку.

Моя цель: заменить значок, когда ссылка на xyz находится в той же строке, что и изображение.

Пока это мой фрагмент:

 var rows = document.getElementsByTagName("tr");
for(var i = rows.length - 1; i >= 0; i--) {     
        var links = rows[i].getElementsByTagName("a");
        for(var k = links.length - k; k >= 0; k--) {
            if (links[k].href =="http://www.XXXX.net/forum/index.php?showforum=121"){
                var images = rows[i].getElementsByTagName("img");
                    for (var j=0;j<images.length;j  ) {
                    images[j].src = "http://www.XXXX.net/forum/folder_post_icons/icon7.gif";
                    }
            }
        }
}
  

Я почти уверен, что это на самом деле не лучшая концепция. Но, как вы могли видеть, я пытаюсь искать ссылки во всех строках, и как только ссылка на форум «121» найдена, я пытаюсь заменить все изображения в этой конкретной строке.

Что я получаю, так это то, что каждое изображение на сайте заменяется.

Ответ №1:

Поскольку это достаточно просто, вот полный скрипт, который это делает.
Он использует jQuery, и вот удобная ссылка на jQuery. Смотрите, в частности, раздел «Селекторы» (которые почти такие же, как селекторы CSS).

Re: "What I get is every image at the site getting replaced."

Возможно, это потому, что критерии поиска слишком широкие. Если это плохо оформленная страница (использует табличные макеты), каждое изображение может находиться в строке таблицы с целевой ссылкой!

При публикации вопросов Greasemonkey ссылайтесь на целевую страницу или, как минимум, размещайте достаточное количество HTML-кода страницы, чтобы мы могли настроить скрипт GM в соответствии с ним.


В любом случае, это сработает, возможно, до получения дополнительной информации о целевой странице:

 // ==UserScript==
// @name     _Replace image on custom-targeted row
// @include  http://www.XXXX.net/forum/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// ==/UserScript==

//--- This may need tuning based on information not provided!
var targetLinks = $("tr a[href*='showforum=121']");

//--- Loop through the links and rewrite images that are in the same row.
targetLinks.each ( function () {
    //--- This next assumes that the link is a direct child of tr > td.
    var thisRow = $(this).parent ().parent ();

    //--- This may need tuning based on information not provided!
    var images  = thisRow.find ("td img");

    //--- Replace all target images in the current row.
    images.each ( function () {
        $(this).attr (  
            'src', 
            'http://www.XXXX.net/forum/folder_post_icons/icon7.gif'
        );
    } );
} );
  

Комментарии:

1. Спасибо, раздел форума, для которого я это сделал, скрыт, но в следующий раз я постараюсь предоставить более подробную информацию о сайте. Мне пришлось немного расширить код 🙂