按十进制分割数字并返回2个单独的元素

时间:2013-05-23 12:27:04

标签: javascript jquery arrays split

这是一项棘手的任务。我的价格表如下:

<span class="price">10.99€/span>
<span class="price">1.99€/span>

我需要将其转换为此

<span class="price">10<span class="decimal">.99</span></span>
<span class="price">1<span class="decimal">.99</span></span>

到目前为止,这是我如何处理这个问题

$(".price").each(function() {
    var PriceArray = ($(".price").text());
    var re = /\s*€\s*/
    var PriceArraySplit = PriceArray.split(re) // I remove Euro sign
});

此外,据我所知,我需要将每个数字按十进制分割并将它们存储在数组中,然后使用该数组中的新值替换值。

这就是我大脑溢出的地方。

3 个答案:

答案 0 :(得分:3)

试一试:

 $(".price").each(function(){
      var $this = $(this),
          PriceArray = $this.text().split('.');
      $this.html(PriceArray [0]+'<span class="decimal">.'+PriceArray [1].replace('€','')+'</span>');
    })

答案 1 :(得分:1)

这是我想到的第一个 第二个方式:

$("span.price").html(function(i,oldHtml) {
   return oldHtml.replace(/(\.\d+)€?/,'<span class="decimal">$1</span>');    
});

演示:http://jsfiddle.net/tAHW3/1/

应该是相当不言而喻的;如果没有,请为.html()以及.replace()JS regular expressions阅读一些doco应该有所帮助。

答案 2 :(得分:0)

您可以使用split()replace()功能:

$(".price").each(function() {
    var s = $(this).text().split(".");
    $(this).html(s[0] + '<span class="decimal">.' +  s[1].replace('€','') + '</span>');
});

这是FIDDLE