個人的には正規表現を使用します。
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ではなくクラス名で定義されていることがわかります。バニラスクリプトに次の変更を加えました。リンクしたページでは正常に機能しますが、この実装では、各ページで最初に出現したウィジェットでのみ機能することに注意してください。とにかく、1ページに複数ある可能性は低いと思いますので、大したことではありません。
あなたのページで動作します:
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>