2013-04-08 190 views
1

我想更改页面上的所有链接,它适用于没有类的链接,但不适用于具有类的链接。更改页面上的所有链接

这是我使用的代码:

window.onload = function() { 
     /* onload code */ 

var anchors = document.getElementsByTagName("a"); 

for (var i = 0; i < anchors.length; i++) { 
    anchors[i].href = "http://www.example.com/?redirect=" + anchors[i].href 
} 
} 

它适用于链接,如:

<a id="box-left" href="http://www.google.com"></a> 

但是,这并不工作:

<a class="links" href="redirect.php?link=125411" onclick="launch();" target="_blank"></a> 
+0

尝试使用第一锚[I] .removeAttribute( “HREF”);然后设置它。 而不是window.onload使用document.onload可以被触发。 如果您将代码提供给jsfiddle或jsbin,会更好。 – Givi 2013-04-08 17:13:30

回答

0

我想那正确的功能应该是:

var anchors = document.getElementsByTagName("class"); 

window.onload = function() { 
    /* onload code */ 

var anchors = document.getElementsByTagName("a"); 

for (var i = 0; i < anchors.length; i++) { 
    anchors[i].href = "http://www.mysite.com/?redirect=" + anchors[i].href 
} 
} 
+0

你好,对不起有一个错字,是的,我使用“a”而不是“class”,但它仍然不会改变使用class的链接。 – user1938320 2013-04-08 17:10:35

0

使用

var anchors = document.getElementsByTagName('a'); 

,而不是顺便说一句,我建议你使用jQuery选择DOM元素。

+0

你好,对不起,有一个错字,是的,我使用“a”而不是“类”,但它仍然不会改变使用类的链接。 – user1938320 2013-04-08 17:11:05

+0

在我的下一个回答中找到我的建议 – speedingdeer 2013-04-08 17:17:10

0

我测试了它发布的代码,它为我工作。
我把javascript放在标签和正文中的链接中。
也许页面上还有其他内容会干扰。

+0

难道是我想要更改链接的页面在iframe中吗? – user1938320 2013-04-08 17:18:29

+0

我认为CSS可以像我上面所写的那样混合一些东西。 JS也适合我 – speedingdeer 2013-04-08 17:20:33

+0

我不确定iFrame。您可以随时检查JavaScript是否被触发,方法是在函数的开始处添加alert(),并检查它是否在最后通过另一个警报完成。 – RacerNerd 2013-04-08 17:21:26

0

也许你有一些奇怪的CSS whick混合这个链接与这个类=“links”属性?您也可以尝试将类添加到这两种链接并按类选择。

var anchors = document.getElementsByClassName("dynamic_links"); 

<a id="box-left" class="dynamic_links" href="http://www.google.com"></a> 

<a class="links dynamic_links" href="redirect.php?link=125411" onclick="launch();" target="_blank"></a> 

让我知道这件事怎么样?

0

如果您正在使用jQuery,它像这样简单:

$('a').attr("href", "http://www.google.com/") 
相关问题