问题描述:
我正在编写一个Greasemonkey脚本,如果只有一个搜索结果的话,它将重定向用户。我试图从一个有许多父表的链接中获取链接。那我想从长相链接像这样的页面的一部分:从<a>表中获取href
<tr class="odd">
<td class="name first">
<a href="need this one">Text</a>
</td>
尝试的document.getElementById(“名头”),但仍然没有成功。我需要帮助而无需任何外部库。该页面设计为使单元格背景变暗,因此如果没有称为“偶”的类,则假定只有一个结果,并且该部分正常工作。
答
基于目标页面和您的明显的目的上(按照第一个结果链接,如果只有一个搜索结果),你想要的代码是这样的:
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;
}
注:
有与两个 “名” 和 “第一” 类的多个节点。这是更具体的选择器的原因。这也是Nathan的答案失败的原因(他由于某种原因忽略了
tr.odd
)。A
checkExistOfEven()
功能是不需要的。在这种情况下,您可能想要
window.location.href =
而不是window.location.replace()
。前者保留历史中的搜索结果页面,以防出现打嗝。
答
你可能使用安全getElementsByClassName
,因为这是一个Greasemonkey的脚本和those browsers probably support it:
var td = document.getElementsByClassName('name first')[0];
var a = td.getElementsByTagName('a')[0];
'class!= id' Nathan的答案是一个非常合理的解决方案。 – Endophage 2011-03-11 22:36:09
嗯,在我的代码中出现错误,因为变量'a'总是返回undefined,甚至不能使用.getAttribute('href')。其实,我试过window.location(a.getAttribute('href')),但我似乎无法理解它有什么问题。 – Exec 2011-03-11 23:00:31
完整地发布您正在使用的确切代码。 Nathan的回答对于所述的问题是有益的。如果您试图关注该链接,则可以使用'window.location.href = a.href;'或'window.location.replace(a.href);'。 – 2011-03-12 01:46:22