用javascript替换文本?

时间:2014-09-30 10:59:59

标签: javascript text replace

经过多次试用后出现错误并取得了一些进展,我仍然无法在我的网站上更改,-的每个kr实例。 我是JS的初学者,并将来自多个来源的以下代码拼凑在一起。代码是问题还是其他什么?

function skrivkr() {
var skrivkr = $('div').text().replace(/\,-/g, 'kr');
$('p').html(skrivkr);
}
window.onload = skrivkr();

更新 谢谢你的回复。该网站加载jquery 1.10.7。 @Niet the Dark Absol:不,我不想把任何东西放在p元素中。如何删除该部分?我只是想找到所有,-并简单地用kr替换而不改变任何格式。

更新 好!进步,那种。每个<strong><dd>的整个内容现在变为(0),而不是kr。除了这些标签的奇怪例外,包括, - 。我自己没有设计网站。

如果有帮助,其中一个, - 出现在以下标记中:

<a href="xxxx" rel="nofollow">
<span class="amount">1</span>
<span class="photo">
<img src="xxxx" alt="product name" width="62" height="42">
</span>
<span class="description">
Prtoduct name
<strong>4444,-</strong>
</span>
</a>

我正在申请的最新剧本是:

$(document).ready(function() {
$('strong, dd').html($('strong, dd').html().replace(/,-/g, 'kr'));
});

2 个答案:

答案 0 :(得分:0)

您可以像这样更新每个div的内容

$(document).ready(function() {
    $('div').each(function(){
        var newText = $(this).html().replace(/,-/g, 'kr');
        $(this).html(newText);
    });
});

你可以删除var&#34; newText =&#34;并将其替换为$(this).html($(this).html()。replace(/, - / g,&#39; kr&#39;));
如果您不熟悉编程,第一个示例可能更容易理解。 但是,您只会更改标记中放置的文本内容。

我会将文本替换为带有某个预定义类的div,例如&#34; autoKronor&#34;,它将如下所示:

<div class="autoKronor">123,-</div>

$(document).ready(function() {
    $('.autoKronor').each(function(){
        var newText = $(this).html().replace(/,-/g, 'kr');
        $(this).html(newText);
    });
});

确保只有您要更改的文字才会更改。
示例:http://jsfiddle.net/akm1uw8h/2/

还要注意使用$(document).ready();而不是window.onload。它完成了你打算用window.onload做的事情。

如果你真的想要改变&#34;, - &#34;的每一个实例。到&#34; kr&#34;然后你可以这样做:

$(document).ready(function() {
    $('body').html($('body').html().replace(/,-/g, 'kr'));
});

但我强烈反对最后一个例子,因为它将是最慢的计算,更重要的是你可能会更改你不打算的东西,就像页面体内的任何脚本块一样(有了我意思是其他javascripts)

答案 1 :(得分:0)

正如在SO上提到的无数次,不要试图将DOM作为字符串来操作。痛苦等待着。

相反,遍历DOM,查找文本节点,并执行要在每个文本节点上进行的任何转换。有很多方法可以做到这一点。

在你的情况下,你有很多问题,正如一些评论者和回应者已经提到的那样:

  1. 您将window.onload设置为undefined调用 skrivkr的结果),而不是skrivkr本身。

  2. 您正在提取元素的文本值,该元素包含所有级别的所有文本的串联,执行替换,然后将其粘贴回html。这将消除下面的所有元素结构。

  3. 小点,但是没有必要在正则表达式中转义逗号。

  4. 您正在提取整个文档中所有div元素的文本内容,对其进行转换,然后将其作为整个文档中所有p元素的内容添加回来。很难想象你想做什么。