用javascript中的$前缀一个数字

时间:2013-05-08 20:28:38

标签: javascript jquery

我有一个小脚本(使用nouislider)

我希望在输出价格时使用$ sign添加rangeThing值。

我的代码是:

$("#slider").noUiSlider({
range: [0, 1000000]
,start: [350000, 700000]
,handles: 2
,step: 50000
,slide: function(){
  var values = $(this).val();
  $("span.rangeThing").text(
     values[0] +
     " - " +
     values[1]
  );
 }
 ,serialization: {
  to: [$("#exTO"),$("#exFR")]
  ,resolution: 1
 }
 }); 

javascript会创建一个类似<span class="rangeThing"></span>

的范围

输出格式类似于200000 - 350000

我想用(逗号)格式化为千位分隔符,但那会变得混乱。因此,我试图用$符号前置两组值来表示价格。

因此产生的结果就像$ 200000 - $ 350000

我尝试将值更改为类似的东西,但这不起作用。

$("span.rangeThing").text(
     + "$" + values[0] +
     " - " +
     + "$" + values[1]
  );

我不确定我是否在正确的轨道上,并且我试图回应$的事实可能是罪魁祸首,也许我应该使用unicode,无论哪种方式都无法正常工作。

帮助表示赞赏

4 个答案:

答案 0 :(得分:4)

问题是Javascript中的一元加号有效地将操作数转换为数字。这意味着

 + "$"

实际上评估为NaN

只需将+运算符放在术语之间,事情应该按照您的预期进行。

答案 1 :(得分:3)

在一行中查看发生了什么:

  • 您开始使用+
  • 第三行有两个+

一行更容易阅读:

$("span.rangeThing").text("$" + values[0] + " - $" + values[1]);

答案 2 :(得分:1)

此外,如果你想要的话,你可以在这里添加逗号......

function addCommas(nStr)
{
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
 x1 = x1.replace(rgx, '$1' + ',' + '$2');
  }
  return x1 + x2;
}

要使用它,只需将该功能添加到您的文件中,并像这样使用它......

$("span.rangeThing").text("$" + addCommas(values[0]) + " - " + "$" + addCommas(values[1]));

答案 3 :(得分:1)

嗯,在您的示例中,您提供的示例中似乎有一个额外的+运算符。正如您在示例中看到的那样:

  $("span.rangeThing").text(
     values[0] +
     " - " +
     values[1]
  );

这将产生字符串"1 - 2",假设值= [1,2]。您可以通过执行以下操作来简单地添加$

$("span.rangeThing").text(
     "$" + values[0] +
     " - " +
     "$" + values[1]
  );

正如您可能已经意识到的那样,您发布的示例存在一些语法错误 - 您到处都有+!有一点需要注意 - 如果您尝试将字符串组合在同一行中作为数字运算,则需要额外的括号。所以,如果你有:

var string = "foo"+2+3+"bar";

您的string将是:

foo23bar

如果你有:

var string = "foo"+(2+3)+"bar";

您的string将是:

foo5bar