2012-06-25 51 views
2

您好我正在读取存储在div中的html数据标记的两个数字。当我尝试将这些数字加在一起时,它们会作为字符串追加。是否有包含在数据属性中的数字并将它们作为数字访问或将它们转换回非字符串数字的javascript谢谢。如何使用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> 
+1

访问您可以使用的数据属性的更简单方法就是这样:$(“zoom1”)。data(“lon1”); – Logard

+0

由于某种原因试图使用data方法访问数据返回undefined。如果您使用数据方法存储数据,这是否也适用? – codelove

回答

5

只需使用parseFloat()

var lon1 = parseFloat($('#zoom1').attr('data-lon1')); 
    lat1 = parseFloat$('#zoom1').attr('data-lat1')); 
console.log(lat1+lon1); 

JS Fiddle demo

参考文献:

+0

这很好,谢谢...你知道如果这比使用data()方法更快吗? – codelove

+2

@codelove它应该更快,因为jQuery不需要解释它是什么类型的数据,尽管我仍然更喜欢'.data'方法。 –

+0

我在这方面服从凯文B,但我没有客观证据支持这种假设(除了简单的常识,基于工作避税)。 –

0

有一个称为parseFloat JavaScript函数。使用parseFloat($("#zoom1").attr("data-lon1")

3

你可以使用.data()方法,将采取的值正确解析为基础类型的护理:

var lon1 = $('#zoom1').data('lon1'); 
var lat1 = $('#zoom1').data('lat1'); 
console.log(lat1 + lon1); 

你会发现,使用.data()方法,当你不再传递作为参数完整的属性名称,但只有后缀 - lon1lat1而不是data-lon1data-lat1

而这里的现场演示:http://jsfiddle.net/E7Av7/

哦,不要忘了给一个正确的ID给您的DIV,使您的数据选择器返回的东西,你似乎忘了这样做的代码片段张贴在你的问题:

<div data-Lon1="1.3" data-Lat1="-1.2" id="zoom1"></div>​ 
0

使用.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

Is floating point math broken?

http://jsfiddle.net/E7Av7/1/

相关问题