我正在编写一个Greasemonkey脚本,如果该页面只有一个搜索结果,则会重定向用户。我正在尝试从一个包含许多父表的表中获取链接。我试图从中获取链接的页面部分如下所示:
<tr class="odd">
<td class="name first">
<a href="need this one">Text</a>
</td>
尝试了document.getElementById('name first'),但仍未成功。没有任何外部库我需要帮助。该页面的设计使得偶数单元格的背景变暗,所以如果没有名为“even”的类,则假定只有一个结果,并且该部分正常工作。
答案 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;
}
注意:
有多个节点同时包含“name”和“first”类。这是更具体的选择器的原因。这也是Nathan的回答失败的原因(由于某种原因,他忽略了tr.odd
。
不需要checkExistOfEven()
功能。
在这种情况下,您可能需要window.location.href =
而不是window.location.replace()
。前者会保留历史记录中的搜索结果页面,以防出现打嗝。
答案 2 :(得分:0)
使用document.querySelector可能更容易:
var a = document.querySelector("td.first.name a");