Как сделать значение пользовательского атрибута данных числовым с помощью JavaScript
Привет, я читаю два числа из HTML-тегов данных, хранящихся в div. Когда я пытаюсь сложить числа вместе, они добавляются в виде строк. Есть ли в любом случае включить числа в атрибут данных и получить к ним доступ в виде чисел или преобразовать их обратно в нестроковые числа с благодарностью 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>
4 ответа
Просто используйте parseFloat()
:
var lon1 = parseFloat($('#zoom1').attr('data-lon1'));
lat1 = parseFloat$('#zoom1').attr('data-lat1'));
console.log(lat1+lon1);
Рекомендации:
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, чтобы ваш селектор данных возвратил что-то, как вы, кажется, забыли сделать это в фрагменте кода, размещенном в вашем вопросе:
<div data-Lon1="1.3" data-Lat1="-1.2" id="zoom1"></div>
Использование .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
Существует функция JavaScript, которая называется parseFloat
, использование parseFloat($("#zoom1").attr("data-lon1")
,