有没有办法用javascript或php(或其他任何东西)更改某个标签的所有HTML元素的特定属性?例如,我想使用javascript来更改所有“< a>”页面上的元素具有“target ='_ blank'”属性。有什么建议吗?
答案 0 :(得分:5)
getElementsByTagName
将获取所有锚点,然后您可以迭代它们:
var list = document.getElementsByTagName("a"), len = list.length;
while( len-- ) {
list[len].target = "_blank";
}
JSFiddle:http://jsfiddle.net/zwbCS/
答案 1 :(得分:2)
以下jQuery代码将target =“_ blank”属性添加到页面上的所有锚点(a)元素:
$(function() {
$('a').attr('target', '_blank');
});
在上面的脚本之前,您需要在HTML的head元素中包含jQuery的副本。所以你的头元素看起来像是:
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$('a').attr('target', '_blank');
});
</script>
</head>
答案 2 :(得分:1)
首先,您似乎没有区分服务器端语言(如PHP)和客户端(如Javascript)之间的区别。阅读差异here。
回答你的问题。最适合您的选择(以及最简单的恕我直言)是获取jQuery并使用以下脚本:
$(document).ready(function() {
$('a').attr('target', '_blank');
});
答案 3 :(得分:0)
看一下使用jquery,您应该可以执行类似
的操作$("a").attr("target", "_blank");
答案 4 :(得分:0)
这是一个JQuery示例,如果您想要在新窗口中仅打开外部链接:
var myHosts = [ // just in case you are using full abs paths
'www.mydomain.com'
];
jQuery(function()
{
jQuery( 'a[href^="http"]' ).each( function()
{
if ( jQuery.inArray( this.hostname, myHosts ) == -1 && this.href.indexOf( location.hostname ) == -1 )
jQuery( this ).attr('target','_blank');
});
});
恕我直言,强迫游客以你的方式做到这一点并不是一个好主意。现代浏览器具有易于使用的快捷键,用于在新窗口/选项卡中打开链接。因此,如果访问者发现您的网站非常有用,他会回复您,即使他通过点击外部链接离开您的网站。
如果您想向访问者提供有关您网站上外部链接的提示,建议您在链接中添加一个图标(例如CSS)并修改并使用上面的脚本添加所需的CSS类到那个链接。像:
jQuery(function()
{
jQuery( 'a[href^="http"]' ).each( function()
{
if ( jQuery.inArray( this.hostname, myHosts ) == -1 && this.href.indexOf( location.hostname ) == -1 )
jQuery( this ).addClass('external_link ');
});
});
CSS:
.external_link { padding-right: 20px; background: url(path/to/the/image) no-repeat right top; }