如何使用 JavaScript 使自定义数据属性值成为数字
how to make custom-data-attribute value numeric with javascript
嗨,我正在从存储在div 中的 html 数据标签中读取两个数字。当我尝试将数字相加时,它们将作为字符串附加。无论如何,是否可以在数据属性中包含数字并将它们作为数字访问或使用 javascript 将它们转换回非字符串数字,谢谢。
例
<div data-Lon1="1.3" data-Lat1="-1.2"></div>
<script>
lon1 = $('#zoom1').attr('data-lon1');
lat1 = $('#zoom1').attr('data-lat1');
console.log(lat1+lon1);
//returns '1.3-1.2' (I want .1 in this example)
</script>
只需使用 parseFloat()
:
var lon1 = parseFloat($('#zoom1').attr('data-lon1'));
lat1 = parseFloat$('#zoom1').attr('data-lat1'));
console.log(lat1+lon1);
JS小提琴演示。
引用:
-
number()
. -
parseFloat()
.
您可以使用
.data()
方法,该方法将负责将值正确解析为底层类型:
var lon1 = $('#zoom1').data('lon1');
var lat1 = $('#zoom1').data('lat1');
console.log(lat1 + lon1);
您会注意到,使用 .data()
方法时,您不再将完整的属性名称作为参数传递,而只传递后缀 - lon1
和 lat1
而不是 data-lon1
和 data-lat1
。
这是一个现场演示:http://jsfiddle.net/E7Av7/
哦,不要忘记给你的div一个正确的id,这样你的数据选择器就会返回一些东西,因为你似乎忘记在问题中发布的代码片段中这样做:
<div data-Lon1="1.3" data-Lat1="-1.2" id="zoom1"></div>
> 有一个名为 parseFloat
的 JavaScript 函数。使用parseFloat($("#zoom1").attr("data-lon1")
.
使用尝试解析值的.data()
。
var lon1 = $('div').data('lon1');
var lat1 = $('div').data('lat1');
console.log(lat1+lon1);
但是,如果您希望从中0.1
结果,则必须执行以下操作:
console.log( Math.round( ( lat1+lon1 ) * 100000000000 ) / 100000000000 );
否则你会得到0.10000000000000009
而不是0.1
请参阅浮点数学坏了吗?
http://jsfiddle.net/E7Av7/1/
相关文章:
- 序列化数据属性中对象的最可靠方法
- jQuery最近父级的数据属性选择器
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 数据属性仅在切换设备模式下工作
- 函数jquery.html()不提供数据属性集值
- 在数据属性上进行下拉自动选择
- 对象获胜'如果qml中的其他地方定义了数字动画属性,则t设置动画
- JavaScript-获取数据属性的值返回未定义的值
- 如何替换数据属性中的特定字符串单词
- 使用数据属性将HTML数据复制到另一个元素
- 带有CSS的数据属性就没那么有用了
- 查找所有TD标签并读取其数据属性
- 使用jQuery获取第N个元素的数据属性值
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- 数据属性有没有更干净的方法
- 是否可以使用CSS分配数据属性
- 如何使用 JavaScript 使自定义数据属性值成为数字
- 带数字的数据属性名称
- 使用.replace()在HTML5数据属性上存储jQuery $.data()检索到的数字时未捕获的TypeError
- 按数据属性排序列表项,先按字母顺序排序,然后按数字排序