改变<a> target to &#34;_blank&#34; depending on href</a>

时间:2010-09-01 20:05:43

标签: javascript href target getelementsbytagname

我正在尝试对页面上的链接进行排序,并根据其网址将其中一些链接打开到新窗口中。这是我的代码。它似乎没有工作。你能明白为什么吗?

function MakeMenuLinksOpenInNewWindow() {
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
        if (links[i].href == "http://testtesttest.org/")
            links[i].target = "_blank";
    }
}
MakeMenuLinksOpenInNewWindow();

4 个答案:

答案 0 :(得分:2)

确保在调用此函数时已加载DOM:

window.onload = MakeMenuLinksOpenInNewWindow;

或:

<body onload="MakeMenuLinksOpenInNewWindow();">

答案 1 :(得分:1)

使用jQuery.js。它会让你的生活更轻松:

$("a[href='http://testtesttest.org/']").attr("target", "_blank");

答案 2 :(得分:0)

你可能不应该设置这个javascript。而是使用HTML。

但如果你必须......

function MakeMenuLinksOpenInNewWindow() {
    var links = document.getElementsByTagName("a");
    for (var i = 0, l = links.length; i < l; i++) {
        if (links[i].href === "http://www.example.com/")
            links[i].target = "_blank";
    }
}
window.onload = MakeMenuLinksOpenInNewWindow;

答案 3 :(得分:0)

你的javascript看起来很好。假设您在尝试修改链接元素之前存在链接元素问题,则需要延迟运行其他帖子中提到的方法。我首选的方法是将脚本内容移动到页面的末尾。

因为看起来你正在使用外部js文件,所以你的页面需要

    ... 
    <a href="http://testtesttest.org/" >whatever</a>
    ... 
    <script src="myscriptfile.js"></script>
</body>
</html>

如果您仍有问题,则必须发布更完整的示例。

编辑:另一点。如果您仍然遇到问题,请确保没有重写href属性中您期望的URL。例如,如果你不提供,IE会在.com url的末尾添加一个尾随/,这会导致你的比较失败。