2011-12-04 150 views
-1

有沒有辦法改變一個特定的標籤與JavaScript或PHP(或其他)的所有HTML元素的特定屬性?例如,我想使用JavaScript更改頁面上的所有「<a>」元素以具有「target ='_ blank'」屬性。有什麼建議麼?更改所有標籤的HTML元素的屬性?

+2

那你試試這麼遠嗎? – Jpsy

+0

我還沒有真正嘗試過任何東西。我不知道從哪裏開始。 – Proffesor

+4

@JiminP:絕對的廢話。 – RightSaidFred

回答

2

以下jQuery代碼將增加一個目標=「_空白」屬性的所有錨(a)以元素頁面:

$(function() { 
    $('a').attr('target', '_blank'); 
}); 

在上面的腳本之前,您需要在HTML頭元素中包含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> 
+0

jQuery代碼本身是否必須在頭部,或只是「」? – Proffesor

+0

@ user1046024:如果這是您需要的JavaScript,請不要加載jQuery。 – RightSaidFred

+0

@ user1046024:兩者都不在頭上,但jQuery的腳本元素(第一個)應該在另一個之前。雖然普遍的共識似乎是使用丹尼斯的解決方案,但他沒有具體說明代碼應該放在哪裏,以便適用於所有鏈接。 – tjbp

0

看看使用jquery你應該能夠做到像

$("a").attr("target", "_blank"); 
+0

我馬上試試,謝謝。 – Proffesor

1

首先,你似乎不區分服務器端語言(如PHP),和客戶機之間的區別方(如Javascript)。閱讀差異here

回答你的問題,但。你最好的選擇(和最簡單的恕我直言)是獲得jQuery和使用下面的腳本:

$(document).ready(function() { 
    $('a').attr('target', '_blank'); 
}); 
5

getElementsByTagName會抓住你所有的錨,然後你可以在它們之間迭代:

var list = document.getElementsByTagName("a"), len = list.length; 
while(len--) { 
    list[len].target = "_blank"; 
} 

的jsfiddle:http://jsfiddle.net/zwbCS/

+1

+1不建議包括jquery或類似的任務,可以輕鬆完成任務。 –

+1

'document.getElementsByTagName(「a」)''可以替換爲'document.links',這樣稍微更有效率('target'對非鏈接錨點沒有意義)。 –

+0

@RobW這將適用於具體例子由OP提供,但我的回答是針對更改「某個標籤的所有HTML元素的特定屬性」的更一般的想法。 – Dennis

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