经过多次试用后出现错误并取得了一些进展,我仍然无法在我的网站上更改,-
的每个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'));
});
答案 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,查找文本节点,并执行要在每个文本节点上进行的任何转换。有很多方法可以做到这一点。
在你的情况下,你有很多问题,正如一些评论者和回应者已经提到的那样:
您将window.onload
设置为undefined
(调用 skrivkr
的结果),而不是skrivkr
本身。
您正在提取元素的文本值,该元素包含所有级别的所有文本的串联,执行替换,然后将其粘贴回html
。这将消除下面的所有元素结构。
小点,但是没有必要在正则表达式中转义逗号。
您正在提取整个文档中所有div
元素的文本内容,对其进行转换,然后将其作为整个文档中所有p
元素的内容添加回来。很难想象你想做什么。