Получение href из тега <a>в таблицах - PullRequest
2 голосов
/ 12 марта 2011

Я пишу скрипт Greasemonkey, который перенаправляет пользователя, если на этой странице есть только один результат поиска. Я пытаюсь получить ссылку из таблицы, которая имеет много родительских таблиц. Та часть страницы, с которой я пытаюсь получить ссылку, выглядит следующим образом:

<tr class="odd">
<td class="name first">
    <a href="need this one">Text</a>
</td>

Пробовал document.getElementById ('name first'), но все равно безуспешно. Мне нужна помощь без каких-либо внешних библиотек. Страница имеет дизайн затемнения фона четных ячеек, поэтому, если нет класса с именем 'even', то предполагается, что есть только один результат, и эта часть работает правильно.

Ответы [ 3 ]

5 голосов
/ 12 марта 2011

Вы, вероятно, можете безопасно использовать getElementsByClassName, так как это скрипт Greasemonkey и эти браузеры, вероятно, поддерживают его :

var td = document.getElementsByClassName('name first')[0];
var a = td.getElementsByTagName('a')[0];
1 голос
/ 12 марта 2011

На основе целевой страницы и вашей очевидной цели (перейдите по первой ссылке на результат, если есть только один результат поиска), вам нужен следующий код:

var EvenRow = document.querySelector ("table.listing tr.even");
if (EvenRow == null)
{
    var ResultLink  = document.querySelector ("table.listing tr.odd td.name.first a");
    if (ResultLink != null)
        window.location.href = ResultLink.href;
}


Примечания:

  1. Существует несколько узлов с классами «name» и «first». Это причина для более конкретного селектора. Это также причина, по которой ответ Натана не удался (он почему-то проигнорировал tr.odd).

  2. Функция checkExistOfEven() не требуется.

  3. В этом случае вы, вероятно, захотите window.location.href = вместо window.location.replace(). Первый сохраняет страницу результатов поиска в истории на случай некоторого сбоя.

0 голосов
/ 12 марта 2011

с использованием document.querySelector , вероятно, проще:

var a = document.querySelector("td.first.name a");
...