2017-03-03 43 views
1

它對第一個匹配項工作正常,但我有多個匹配的URL出現未被替換。如何在全球替換URL

如果我使用全局標籤'g'首次發生也不起作用。

我需要更改所有匹配的網址。

HTML:

<p id="demo"> 
    Welcome to <a href="http://google.com?sdfsdf">US </a> and s sdfsdfsdf sdfsdf<a href="http://google.com?sdfsdf">US </a>dfsdfsdfsd<a href="http://google.com?sdfsdf">US </a>sfsdfsdfsdfsdf<a href="http://live.com?dfgdfgdfg?dfgdfg=2016">US </a> 
    </p> 

JS:

var str = document.getElementById("demo").innerHTML; 
var res = str.replace("http://google.com?sdfsdf", "sample link url"); 
document.getElementById("demo").innerHTML = res; 
+0

你確實只想替換錨'href'值,或者如果文本出現可見? – haxxxton

+0

@haxxxton:全局只有href值 – CodeMan

+0

@CodeMan我改變了我的答案。我現在已經完全檢查了它,並且現在正在工作。包括鏈接到js小提琴 – prabhjot

回答

1

我們可以用jQuery attribute contains selector選擇包含你正在尋找

var searchString = 'http://google.com?sdfsdf'; // specify the search value 
var replaceString = 'Replace with me'; // specify the value to replace found strings with 
// for each anchor tag with an href containing the search string 
$("a[href*='" + searchString + "']").each(function(){ 
    // replace its current href with a the search string replaced 
    $(this).attr('href', $(this).attr('href').replace(searchString, replaceString)); 
}); 
href值的所有鏈接

注:如果你實際上是試圖更換匹配的元素的完整的URL,就可以消除對.replace功能的需要,像這樣:

$(this).attr('href', replaceString); 
+0

你可能會離開,而不需要使用href字符串上的替換函數。那時你知道searchString匹配。 '$(本).attr(「href」屬性,replaceString);' – synthet1c

+0

@ synthet1c,你是正確的,如果我們假設OP不想要替換URL中的一部分,因爲它不是在問題清楚,我錯了'謹慎的一面。我會添加一個註釋,雖然 – haxxxton

0

檢查。這可能工作https://jsfiddle.net/sfhmvrdo/

<a href="http://google.com">google</a> 
<a href="http://google.com">more google</a> 
<a href="http://stackoverflow.com">fb</a> 
<button> 
click here 
</button> 

這是你需要的jQuery。

$('button').click(function(){ 

change_href(); 
}); 

function change_href(){ 
$("a").each(function() { 
if($(this).attr('href')=="http://google.com"){ 
$(this).attr('href','http://facebook.com'); 
} 
}); 
} 
+0

這不起作用! –