Как сделать значение пользовательского атрибута данных числовым с помощью 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);

JS Fiddle demo.

Рекомендации:

  • 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

См. Математика с плавающей точкой сломана?

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

Существует функция JavaScript, которая называется parseFloat, использование parseFloat($("#zoom1").attr("data-lon1"),

Другие вопросы по тегам