将HTML5数据类型转换为数字

时间:2014-11-20 19:09:05

标签: javascript html5 custom-data-attribute

背景:我想添加和减去数字。我正在使用HTML数据属性。 parseInt()和Number()并没有像我想象的那样工作。

   <div class="originalNumber" data-original-number="1,000,000">1,000,000</div>

   <div class="bucket1" data-bucket="100,000">100,000</div>
   <div class="bucket2" data-bucket="200,000">200,000</div>
   <div class="bucket3" data-bucket="300,000">300,000</div>

我得到原始号码:

   var getOriginal=$(".originalNumber").data("original-number");

console.log = 1,000,000

现在我想添加和减去它。例如,单击bucket1,1,000,000将变为900,000(1,000,000-100,000)

问题是我无法将字符串转换为数字。我尝试过使用parseInt()和Number()无效。

   var getOriginal=parseInt(getOriginal);
   console.log(getOriginal);

返回1

    var getOriginal=Number(getOriginal);
    console.log(getOriginal);

返回NaN

我在这里缺少什么?

3 个答案:

答案 0 :(得分:2)

尝试使用正则表达式:

 var getOriginalNumeric = parseInt(getOriginal.replace(/[^\d\.]/gi, ''));

这将删除除数字和小数之外的任何内容。

答案 1 :(得分:1)

在使用parseInt()之前,您需要从包含该数字的字符串中删除所有逗号。

This question有一些关于最佳方法的信息。

答案 2 :(得分:1)

问题是逗号被解释为十进制符号,这是大多数国家/地区的标准,但美国(例如)使用句点作为小数点分隔符。

您需要替换逗号:

getOriginal = parseInt(getOriginal.replace(/,/g, ""), 10);

以下是一个实例:http://codepen.io/TheDutchCoder/pen/WbbzJL