如何用JavaScript替换部分文本

时间:2018-07-14 20:01:57

标签: javascript jquery

我有此代码:

<span class="price-measure">
23,63 € / 1 m2
</span>

现在,我想用“ XYTEXT”更改“ / 1平方米”,但是我不知道如何。

我尝试在下面使用JS代码,但无法正常工作。

谢谢:-)

<script type="text/javascript">
$(document).ready(function () { 
var elem = $('.price-measure span:contains("/ 1 m2 ")');
elem.text(elem.text().replace("/ 1 m2 ", "s DPH/m2"));
});
</script>

8 个答案:

答案 0 :(得分:1)

<span>23,63 €</span>
<span class="price-measure">/ 1 m2</span>

<script type="text/javascript">
$(document).ready(function () { 
    var elem = $('.price-measure');
    elem.html("s DPH/m2");
});
</script>

不更改html内容:

<span class="price-measure">
23,63 € / 1 m2
</span>
<script>
    $(document).ready(function () { 
    var text = $('.price-measure').text().replace("/ 1 m2", "s DPH/m2");
    $('.price-measure').text(text);
    });
</script>

答案 1 :(得分:1)

您的选择器错误。当您真正想要的是包含文本的元素span时,您正在.price-measure内要求price-measure

为了获得良好的编码习惯,我还将硬编码的值移到了变量中,以免重复。

(我还从搜索查询的末尾删除了多余的空格,以使功能更强大。)

$(document).ready(function () { 
var replace="/ 1 m2";
var replaceWith  = "s DPH/m2";

var elem = $('.price-measure:contains("' + replace + '")');

// Make sure we have the element.
console.log(elem);

elem.text(elem.text().replace(replace, replaceWith));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<span class="price-measure">
23,63 € / 1 m2
</span>

答案 2 :(得分:1)

var str1 = "23,63 € / 1 m2";
var str2 = "/ 1 m2";
if(str1.indexOf(str2) != -1){
     alert("23,63 € / 1 m2".slice(0,-(str1.indexOf(str2)))+ 'XYTEXT')
}

str2是需要替换的选定文本。所以我只是从主字符串中删除该部分,然后连接一个新字符串。

答案 3 :(得分:1)

var price = document.getElementById('price-measure').innerHTML
document.getElementById('price-measure').innerHTML= price.replace('1 m2','s DPH/m2')
i think good way use id with js not className 
<br/><br/><br/><br/>
<span id="price-measure">
23,63 € / 1 m2
</span>

答案 4 :(得分:0)

我不知道如何使用jQuery,但是在纯JS中,您可以这样做:

const el = document.querySelector(/* your selector */)
el.innerText = el.innerText.replace("/ 1 m2 ", "s DPH/m2")

答案 5 :(得分:0)

如果您不需要预先过滤元素,只需遍历它们并替换其内容:

$(document).ready(function() {
  var elements = $('.price-measure');
  
  elements.each(function(index, element) {
    element = $(element)    
    element.text(element.text().replace('/ 1 m2', 's DPH/m2'));
  });  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="price-measure">
23,63 € / 1 m2
</span>

如果元素很多,并且需要在替换它们的内容之前对其进行预过滤,请使用jQuery的.filter(...)方法检查特定元素是否具有可替换的文本:

$(document).ready(function() {
  var replacement = '/ 1 m2';  
  var elements = $('.price-measure').filter(function(index, element) {
    return $(element).text().indexOf(replacement) > -1;
  });
  
  elements.each(function(index, element) {
    element = $(element)    
    element.text(element.text().replace('/ 1 m2', 's DPH/m2'));
  });  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="price-measure">
23,63 € / 1 m2
</span>

答案 6 :(得分:0)

答案 7 :(得分:0)

您可以尝试将innerHTML属性与split结合使用。

类似这样的东西:

var first_part = $('.price-measure').innerHTML.split("/")[0];
var second_part = $('.price-measure').innerHTML.split("/")[1];
$('.price-measure').innerHTML.split("/")[0].append('XYTEXT');