从<a> tag within tables</a>获取href

时间:2011-03-11 22:28:00

标签: javascript html greasemonkey href

我正在编写一个Greasemonkey脚本,如果该页面只有一个搜索结果,则会重定向用户。我正在尝试从一个包含许多父表的表中获取链接。我试图从中获取链接的页面部分如下所示:

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

尝试了document.getElementById('name first'),但仍未成功。没有任何外部库我需要帮助。该页面的设计使得偶数单元格的背景变暗,所以如果没有名为“even”的类,则假定只有一个结果,并且该部分正常工作。

3 个答案:

答案 0 :(得分:5)

使用getElementsByClassName可能是安全的,因为这是一个Greasemonkey脚本和those browsers probably support it

var td = document.getElementsByClassName('name first')[0];
var a = td.getElementsByTagName('a')[0];

答案 1 :(得分:1)

根据目标页面和您的明显目的(按照第一个结果链接,如果只有一个搜索结果),您想要的代码是:

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”类。这是更具体的选择器的原因。这也是Nathan的回答失败的原因(由于某种原因,他忽略了tr.odd

  2. 不需要checkExistOfEven()功能。

  3. 在这种情况下,您可能需要window.location.href =而不是window.location.replace()。前者会保留历史记录中的搜索结果页面,以防出现打嗝。

答案 2 :(得分:0)

使用document.querySelector可能更容易:

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