如何使用javascript在页面上获取包含特定单词的链接

如何使用javascript在页面上获取包含特定单词的链接,javascript,bookmarklet,Javascript,Bookmarklet,我正在尝试获取一个页面上包含单词的链接,并将其刷新到另一个页面上的bookmarklet中 以下是我无法为bookmarklet工作的代码: javascript: for (i=0; i < document.links.length; i++) { if(document.links[i].href.match('exampleword')) { location.href = 'http://google.com/exampleword';

我正在尝试获取一个页面上包含单词的链接,并将其刷新到另一个页面上的bookmarklet中

以下是我无法为bookmarklet工作的代码:

   javascript:
        for (i=0; i < document.links.length; i++) {
     if(document.links[i].href.match('exampleword')) {
    location.href = 'http://google.com/exampleword'; 
}
}
javascript:
对于(i=0;i

为什么这不起作用?

您正在检查链接href是否包含该单词-从您的问题来看,它听起来更像是您想要锚文本(即您单击的单词)。最简单的方法(如果
包含其他标记,则不是100%准确)如下:

if (document.links[i].innerHTML.match('exampleword'))

格雷格敏锐地发现,你真正想要的是链接“标签”,而不是href URL。但是我会使用getElementsByTagName('A')获取所有元素。然后遍历它们的第一个子节点

获取“firstChild”的“节点值”与获取innerHTML或(innerText,有人提到过,但不太受支持)一样容易

下面是一个简单的示例,查找“word1”、“word2”和“word3”

我只想补充一点,如果您想将为此而查看的链接限制为页面或站点上链接的子集,您可以通过为要搜索的链接设置特定的类名,以其他方式进行区分。检查您获取的链接的类名只会使事情变得复杂一点。在此,一个简单的节点迭代:

例如:

<html>
<head>
<title>JavaScript match link label</title>
<script type="text/javascript">
var keywords = ['word1','word2','word3'];
function linklabels() {
    var aels = document.getElementsByTagName && document.getElementsByTagName('A');
    var aelsCt = aels.length;
    var keywordsCt = keywords.length;
    for (var i = 0; i < aels.length; i++) {
        var v= aels[i].firstChild.nodeValue;
            //this is the link label, the text seen as the link
        for (var j=0; j < keywordsCt; j++) {
            var re = new RegExp(keywords[j]); 
            if (re.test(v)) {
                alert('refreshing to http://google.com/' + v);
                //window.location.href = "http://google.com/" + v;
            }
        }
    }
}
window.onload=linklabels;
</script>
</head>
<body>
<p><a href="#">word1</a> | <a href="#">word2</a> | <a href="#">word3</a>
<br /><a href="#">word1</a> | <a href="#">word2</a> | <a href="#">word3</a></p>
</body>
</html>

JavaScript匹配链接标签
变量关键字=['word1','word2','word3'];
函数linklabels(){
var aels=document.getElementsByTagName&&document.getElementsByTagName('A');
var aelsCt=aels.length;
var关键字sct=关键字.length;
对于(变量i=0;i||


搜索innerText | | textContent不是更好吗?哦,我明白了。那么我如何显示链接:location.href=document.links[I].href?很抱歉,我是javascriptUsing的新手,只要所有链接都标记一致,使用firstChild就可以了。在某些情况下,例如当您有嵌套的内联标记(等)时,最好使用innerText | | textContent捕获所有文本内容。@J-P,非常好。使用节点方法,我将修改上面的内容,在获取nodeValue之前,深入挖掘文本节点(nodeType 3)的每个标记元素的所有子元素。(幸运的是,我在后台构建并使用了一个能为我完成所有这些的函数。)谢谢!