JavaScript:在新标签中打开链接
我想制作一个JavaScript,将每个链接放入属性target="_blank"
,以便链接将在新标签中打开。这是我做的:JavaScript:在新标签中打开链接
function open_links_in_new_tabs() {
var links = document.documentElement.getElementsByTagName("a");
for(var link in links) {
link.setAttribute("target", "_blank");
}
}
window.onload = function() { open_links_in_new_tabs(); }
但是,这是行不通的。你知道错误在哪里吗?
感谢,
伊万
的foo in bar
语法doesn't work上NodeList
对象(又名 “由document.getElementsByTagName
返回的东西”)。
使用一个普通的老for (var i = 0; i < links.length; i++)
(与links[i]
而不是link
,当然)循环,它应该工作。
您在这里使用的for... in
循环稍微有点错误。试试这个:
for(var link in links) {
links[link].setAttribute("target", "_blank");
}
编辑:虽然我的例子在这种情况下工作,Boldewyn是正确的,如果你的脚本是不是在元件上运行,这将产生意外结果。
这不建议用于普通数组,普通for循环是最好的方法。 – 2011-02-24 11:53:50
是的,我同意 - 请参阅编辑。 – 2011-02-24 11:55:59
我测试这个计算器上,它似乎对所有的链接:)
var links = document.getElementsByTagName("a");
for(var i = 0; i < links.length; ++i) {
links[i].setAttribute('target', '_blank');
}
你为什么不使用jQuery,如果你想在这里使用jquery工作,然后是代码:
$(document).ready(function(){
$('a').attr("target","_blank");
})
为了记录,*原因*您的原始代码不起作用是因为'link'是索引,而不是实际的链接。看到这个例子更好地理解:http://jsfiddle.net/cNcFq/ – 2011-02-24 11:56:12