2011-07-25 139 views
7

我需要編寫一個方法,該方法需要一個字符串並解析鏈接(a href)。如果它找到了一個鏈接,它應該將鏈接添加target =「_ blank」(如果它尚未存在)。添加目標=「_ blank」以鏈接到JavaScript

例子: 的Inputstring「

<a href="www.google.com">Google</a> and <a href="www.yahoo.com"> target="_blank">Yahoo</a> are search engines 

...應該導致輸出字符串

<a href="www.google.com" target="_blank">Google</a> and <a href="www.yahoo.com" target="_blank">Yahoo</a> are search engines 

任何想法如何實現這一

回答

10

不是用普通的js非常困難。

var links = document.getElementsByTagName('a'); 
var len = links.length; 

for(var i=0; i<len; i++) 
{ 
    links[i].target = "_blank"; 
} 
0

您可以使用jQuery的解析?元素,添加屬性,然後讀出HTML,如下所示:

var addTarget = function(input) { 
    return $('<span>' + input + '</span>').find('a').attr('target', '_blank').html(); 
}; 

console.log(addTarget('<a href="www.google.com">Google</a>')); 
6

充滿了問題,但使用與普通的JavaScript:

function addBlankTargets(s) { 
    return (""+s).replace(/<a\s+href=/gi, '<a target="_blank" href='); 
} 

或者使用jQuery:

function addBlankTargets(s) { 
    var p = $('<p>' + s + '</p>'); 
    p.find('a').attr('target', '_blank'); 
    return p.html(); 
} 
var s = '<a href="www.google.com">Google</a> and ' 
     + '<a href="www.yahoo.com">Yahoo</a> ' 
     + 'are search engines.'; 
var x = addBlankTargets(s); 
x; // => '<a href="www.google.com" target="_blank">Google</a> and 
    //  <a href="www.yahoo.com" target="_blank">Yahoo</a> 
    //  are search engines.' 
+0

jQuery解決方案聽起來不錯,但我是JavaScript的絕對初學者。所以,當我有x中的字符串(我假設的一個數組)後,我怎樣才能將它們結合回字符串? – Paul

+0

@Paul:我更新了jQuery的完整答案,看看它是否適合你。基本上,在jQuery中,要獲得「外部HTML」,您必須首先將這些項目包裝到另一個元素中並獲取其內部HTML。 – maerics

+0

非常感謝! – Paul

0

在兩行

var links = document.getElementsByTagName('a'); 
for(i in links) 
    links[i].target=="_blank"?links[i].style.color="#f0f" : links[i].style.color ='#0f0' 

jsfiddle

相關問題