更改所有标签的HTML元素的属性?

时间:2011-12-04 14:11:59

标签: php javascript html

有没有办法用javascript或php(或其他任何东西)更改某个标签的所有HTML元素的特定属性?例如,我想使用javascript来更改所有“< a>”页面上的元素具有“target ='_ blank'”属性。有什么建议吗?

5 个答案:

答案 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; }