我正在尝试在页面上获取包含单词的链接并将其刷新到另一页面。
以下是我没有为书签工作的代码:
javascript:
for (i=0; i < document.links.length; i++) {
if(document.links[i].href.match('exampleword')) {
location.href = 'http://google.com/exampleword';
}
}
为什么这不起作用?
答案 0 :(得分:2)
Greg很清楚你真的想要链接“ label ”,而不是href网址。但我会用 getElementsByTagName('A') 抓取所有元素。然后遍历 firstChild 节点。
获取' firstChild '的' nodeValue '同样容易,因为它是获取innerHTML或(innerText,有人提到,支持较少)。
这是一个最小的例子,寻找'word1','word2'和'word3'。
我只想补充一点,如果您想将链接的链接限制为页面或网站上的链接子集,您可以通过将特定的className设置为您想要的链接来区分其他方式。搜索。这会使问题复杂化,以检查您抓取的链接的className。这里,一个简单的A Node迭代:
实施例
<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>
答案 1 :(得分:1)
您正在检查链接href是否包含单词 - 从您的问题来看,它听起来更像是您想要的锚文本(即您单击的单词)。最简单的方法(如果<a>
包含其他标签,则不是100%准确)是这样的:
if (document.links[i].innerHTML.match('exampleword'))