2016-07-19 50 views
0

我試圖找到並在Javascript替換詞,HTML結構不能改變,所以我只能用JS改變,不能使用jQuery,使用JavaScript雖然不是那麼好:查找和替換詞在javascript

HTML結構如下:

<a id="ys-cc-tablink"> 
    <em> 
    <img src="card.jpg"> 
    <span>&nbsp;Credit/Debit Card</span> 
    </em> 
</a> 

我試圖取代信用卡/借記車與標題付款我曾嘗試低於和精細的工作,以及:

$("#ys-cc-tablink > em > span").each(function() { 
    var text = $(this).text(); 
    $(this).text(text.replace(' Credit/Debit Card', 'Payment')); 
}); 

但我需要在Javascript,而不是jQuery的,可有人請幫助?

感謝

UPDATE:

var str = document.getElementById("demo").getElementsByTagName("span")[0].innerHTML; 
var res = str.replace("Credit/Debit Card", "Payment"); 
document.getElementById("ys-cc-tablink").getElementsByTagName("span")[0].innerHTML = res; 
+0

你嘗試過什麼?你陷入了哪一部分?這裏有幾個組件。在請求我們爲您做這件事之前,您是否試圖徹底解決這些問題? –

+0

用我迄今試過的東西更新了我的問題 –

+0

getElementById(「demo」)的錯字? –

回答

1

可能會導致你querySelectorAll迴路中的所有元素貫穿其中,並檢查是否要替換存在,則文本替換它:

var spans = document.querySelectorAll('#ys-cc-tablink span'); 

for(var i=0;i<spans.length;i++){ 
    var span_text = spans[i].innerText; 

    if(span_text.indexOf('Credit/Debit Card') != -1) 
     spans[i].innerText = span_text.replace("Credit/Debit Card", "Payment"); 
} 

希望這有助於。


var spans = document.querySelectorAll('#ys-cc-tablink span'); 
 

 
for(var i=0;i<spans.length;i++){ 
 
    var span_text = spans[i].innerText; 
 

 
    if(span_text.indexOf('Credit/Debit Card') != -1) 
 
    spans[i].innerText = span_text.replace("Credit/Debit Card", "Payment"); 
 
}
<a id="ys-cc-tablink"> 
 
    <em> 
 
    <img src=""> 
 
    <span>&nbsp;My Credit/Debit Card</span><br> 
 
    <span>&nbsp;test</span><br> 
 
    <span>&nbsp;Credit/Debit Card and some extra text</span> 
 
    </em> 
 
</a>

-1

我猜你的問題與非打破空間&nbsp;實體做。但是,如果您要更換全文,爲什麼不使用$(this).text('Payment')

僅供參考,NBSP可用JavaScript表示爲\u00A0。所以,你可以做$(this).text(text.replace('\u00A0Credit/Debit Card', 'Payment'));

沒有jQuery的,使用element.innerHTML = element.innerHTML.replace('...', '...');element.textContent = ...

+3

我正在嘗試僅使用javascript,而不是jQuery –

+0

我已編輯我的答案,請看看 – Iso

1

這使元素參考:代碼

var elem = document 
    .getElementById("ys-cc-tablink") 
    .getElementsByTagName("em")[0] 
    .getElementsByTagName("span")[0]; 

替換塊:

elem.innerHTML.replace("Credit/Debit Card", "Payment") 

var elem = document 
 
    .getElementById("ys-cc-tablink") 
 
    .getElementsByTagName("em")[0] 
 
    .getElementsByTagName("span")[0]; 
 

 
elem.innerHTML = elem.innerHTML.replace("Credit/Debit Card", "Payment");
<a id="ys-cc-tablink"> 
 
    <em> 
 
    <img src="card.jpg"> 
 
    <span>&nbsp;Credit/Debit Card</span> 
 
    </em> 
 
</a>

+0

@sanjeev這是否對您有幫助?或者我們在這裏需要一些改進... – Ayan