我正在尝试在Javascript中查找和替换单词,html结构无法更改,因此我只能使用JS进行更改,无法使用jQuery,但Javascript不太好:
HTML结构如下:
Dataweave
我正在尝试将 信用卡/借记卡 替换为标题 付款 我在下面尝试过的内容工作得很好:
<a id="ys-cc-tablink">
<em>
<img src="card.jpg">
<span> Credit / Debit Card</span>
</em>
</a>
但我需要用Javascript代替jQuery,有人可以帮忙吗?
感谢
更新
$("#ys-cc-tablink > em > span").each(function() {
var text = $(this).text();
$(this).text(text.replace(' Credit / Debit Card', 'Payment'));
});
答案 0 :(得分: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");
&#13;
<a id="ys-cc-tablink">
<em>
<img src="card.jpg">
<span> Credit / Debit Card</span>
</em>
</a>
&#13;
答案 1 :(得分: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");
}
&#13;
<a id="ys-cc-tablink">
<em>
<img src="">
<span> My Credit / Debit Card</span><br>
<span> test</span><br>
<span> Credit / Debit Card and some extra text</span>
</em>
</a>
&#13;
答案 2 :(得分:-1)
我猜你的问题与非破坏空间
实体有关。但是,如果您要替换整个文本,为什么不使用$(this).text('Payment')
?
作为参考,NBSP可以用JavaScript表示为\u00A0
。所以你可以做$(this).text(text.replace('\u00A0Credit / Debit Card', 'Payment'));
如果没有jQuery,请使用element.innerHTML = element.innerHTML.replace('...', '...');
或element.textContent = ...