1

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

当我们输出价格时,我希望在 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

4 回答 4

4

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

 + "$"

实际上评估为NaN.

只需将+运算符放在术语之间,事情就会如您所愿。

于 2013-05-08T20:33:26.067 回答
3

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

  • 你从一个开始+
  • 第三行有双+

一行会更容易阅读:

$("span.rangeThing").text("$" + values[0] + " - $" + values[1]);
于 2013-05-08T20:30:51.123 回答
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]));
于 2013-05-08T20:37:30.220 回答
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
于 2013-05-08T20:40:48.230 回答