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]

我现在遇到的问题是小部件(不再受支持)对所有产品小部件使用美元(“$”),而我更喜欢用瑞典克朗(“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 定义的。我对 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>
于 2012-12-10T06:36:18.830 回答