我个人会使用正则表达式。
使用 jQuery:
$(document).ready(function(){
var contents=$('#my_widget').html();
var rgx=/\$\s?(\d*(?:\.\d{2})?)/g;
$('#my_widget').html(contents.replace(rgx,"$1 kr"));
});
香草:
var contents=document.getElementById("my_widget").innerHTML;
var rgx=/\$\s?(\d*(?:\.\d{2})?)/g;
document.getElementById("my_widget").innerHTML=contents.replace(rgx,"$1 kr"));
笔记:
这会以以下形式查找价格:
20 美元
20 美元
20.50 美元
20.50 美元
它找不到的一些价格示例:
20 美元
20.999 美元
20.9 美元
使用香草版本,您需要一个事件来触发 javascript。这可能是正文加载,因此您的脚本标签中将包含以下内容:
body.onload=function() {
var content=...
...
};
编辑:我查看了您的页面并且可以看到(至少在那种特定情况下)您的小部件是由类名而不是 id 定义的。我对 vanilla 脚本进行了以下更改,它在您链接的页面上运行良好 - 但您应该知道,在此实现中,它仅适用于它在每个页面上找到的第一次出现的小部件。 . 我认为你不可能有一页多于一个,所以应该没什么大不了的。
适用于您的页面:
var contents=document.getElementsByClassName("ss-widget")[0].innerHTML;
var rgx=/\$\s?(\d*(?:\.\d{2})?)/g;
document.getElementsByClassName("ss-widget")[0].innerHTML=contents.replace(rgx,"$1 kr");
最终编辑:正如上面显示的那样,在小部件中捏造了一些其他的东西,这里是工作的 jQuerified 版本,包括事件处理程序注册和脚本标签
<script>
jQuery(document).ready( //When the document is ready, run the following function...
function(){
jQuery('.ss-widget .product-price').each( //Pick everything with class product-price inside everything with class ss-widget and run the following function on each
function() {
var contents=jQuery(this).html(); //Get the contents of this element
var rgx=/\$\s?(\d*(?:\.\d{2})?)/g; //Define a regex to search for a dollar sign, followed by an optional space, followed by an arbitary amount of digits, optionally followed by a decimal plus 2 digits. Group everything but the dollar sign and space.
jQuery(this).html(contents.replace(rgx,"$1 kr")); //Replace any text found by the regex with it's grouped result, a space, then the text kr.
}
);
}
);
</script>