JavaScript:搜索并替换外部脚本中的字符串



我正在我的网站上运行这个很酷的产品小部件(显示空间),它将选定的产品放在上面。它使用以下脚本:

<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")显示它们,通常放在数字后面。

我更喜欢:
a。将"$99"更改为"99 kr">

b。将"99美元"更改为"99瑞典克朗">
也适用

我几乎不懂任何JavaScript,但有人告诉我,这可以用JavaScript解决。那么,我该怎么办才能解决这个问题呢?

关于小部件外观的示例:http://www.presenttips.se/fars-dag

我个人会使用正则表达式。

使用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美元/年

它找不到的一些价格示例:

$ nbsp nbsp 20

20.999美元

20.9美元

对于vanilla版本,您需要一个事件来触发javascript。这很可能是正文加载,所以你的脚本标签中会有一些东西,比如:

body.onload=function() {
var content=...
...
};

编辑:我看过你的页面,可以看到(至少在这种特殊情况下)你的小部件是由类名定义的,而不是id。。。我认为你不太可能在一个页面上有多个,所以这应该没什么大不了的。

适用于您的页面:

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>

最新更新