0

私は自分のウェブサイトでこのクールな製品ウィジェット (ショースペース) を実行しており、そこに選択した製品を配置しています。次のスクリプトを使用します。

<script>
  (function(d, s, id) {
    if (d.getElementById(id)) return;
    var fjs = d.getElementsByTagName(s)[0],
        js  = d.createElement(s); js.id = id;
    js.src = "http://www.show-space.com/widgets/manager.js?api_key=0qslzweoj79lp7h03ki9";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, "script", "showspace-manager-js"));
</script>

これは、次のようなものによって呼び出されます。[ss-widget id=my_widget]

私が現在直面している問題は、ウィジェット (サポートされなくなりました) がすべての製品ウィジェットに USD (「$」) を使用しているのに対し、私はそれらをスウェーデン クローナ (「kr」) で表示することを好みます。番号。

私は好むだろう
:「$99」を「99 kr」に変更します
が、
b. 「$99」を「SEK 99」に変更
しても問題ありません

私は JavaScript をほとんど知りませんが、これは JavaScript で解決できると言われました。それで、これを修正するために私は何ができますか?

ウィジェットがどのように見えるかの例: http://www.presenttips.se/fars-dag

4

1 に答える 1

1

個人的には正規表現を使用します。

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>
于 2012-12-10T06:36:18.830 に答える