我正在开发一个电子商务网站,我在设计方式格式化价格时遇到了问题。
以这种方式显示价格:
<p class="price">£900.00</p>
我需要在网站上显示所有价格(等级价格)并以这种方式重新格式化:
<p class="price"><span>£</span> 900 <span>.00<span></p>
所以在我可以添加特定的CSS样式到小数和£符号
你有任何想法吗?
BTW我需要通过JS / jquery来做这个,因为我在Back -end中做了它并且它产生了一些冲突,所以它需要在客户端上完成
提前致谢
答案 0 :(得分:4)
以下内容适用于各种货币符号。 Here是工作小提琴。
$('.price').each(function (idx, val) {
var price = $(this).text();
var newOne = price.match(/^(.)(\d+)\.(\d+)$/);
$(this).html("<span>" + newOne[1] + "</span>" + newOne[2] + ".<span>" + newOne[3] + "</span>");
});
答案 1 :(得分:3)
在前端没有必要这样做,因为最好用后端“冲突”指出我们:
$(function(){
var $el, price;
$('.price').each(function(item){
$el = $(this);
price = $el.text().substr(1);
$el.empty().append(
$("<span></span>", { class : "currency", text: "£"})
).append( price.split('.')[0])
.append(
$("<span></span>", { class : "decimals", text: "." + price.split('.')[1]})
);
});
});
答案 2 :(得分:1)
这适用于类似字符串的字符:£900.00
,£900000.00123
,$560125.14500
,您知道其他字符串..
var val = '£900.00';
var currSign = val.charAt(0);
currSign
将为£
var amount = val.substring(1);
amount
将为900.00
var left = amount.split('.')[0];
var right = "."+amount.split('.')[1];
left
将为900
right
将为.00
无论如何都要使用它。
<p class="price"><span>$currSign</span> $left <span>$right<span></p>
答案 3 :(得分:0)
$("p.price").each(function() {
var oldprice = $(this).text();
var split = oldprice.match(/^£(\d+)(\.\d+)$/);
if (split) {
$(this).html('<span>£</span> ' + split[1] + ' <span>'+split[2]+'</span>');
}
});
答案 4 :(得分:0)
$('.price').each(function() {
$(this).html($(this).text().replace(/(£)(\d+)(\.\d\d)/, '<span>$1</span> $2 <span>$3</span>');
});
答案 5 :(得分:0)
我建议:
$('.price').html(function(i,h){
return h.replace(/([£$])(\d+)(.\d{2})/,'<span>$1</span><span>$2</span><span>$3</span>');
});
([£$])
捕获的货币字符为£
或$
,(\d+)
捕获一个或多个数字字符(.\d{2})
会抓住一个句号和两个跟随的数字。 $1
,$2
和$3
依次参考这些匹配。
设置样式(即使没有明确的类名:
p span {
color: #000;
}
p span:first-child {
color: #999;
}
span:first-child + span {
font-weight: bold;
}
span:last-child {
font-size: 80%;
}
参考文献: