在javascript中查找并替换单词

时间:2016-07-19 17:56:47

标签: javascript

我正在尝试在Javascript中查找和替换单词,html结构无法更改,因此我只能使用JS进行更改,无法使用jQuery,但Javascript不太好:

HTML结构如下:

Dataweave

我正在尝试将 信用卡/借记卡 替换为标题 付款 我在下面尝试过的内容工作得很好:

<a id="ys-cc-tablink">
  <em>
     <img src="card.jpg">
     <span>&nbsp;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')); 
});

3 个答案:

答案 0 :(得分:1)

这给出了元素引用:

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

替换代码块:

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

&#13;
&#13;
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>&nbsp;Credit / Debit Card</span>
  </em>
</a>
&#13;
&#13;
&#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");
}

希望这有帮助。

&#13;
&#13;
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>&nbsp;My Credit / Debit Card</span><br>
     <span>&nbsp;test</span><br>
     <span>&nbsp;Credit / Debit Card and some extra text</span>
  </em>
</a>
&#13;
&#13;
&#13;

答案 2 :(得分:-1)

我猜你的问题与非破坏空间&nbsp;实体有关。但是,如果您要替换整个文本,为什么不使用$(this).text('Payment')

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

如果没有jQuery,请使用element.innerHTML = element.innerHTML.replace('...', '...');element.textContent = ...