PHP+JS getElementById().value возвращает int вместо float

РЕДАКТИРОВАТЬ: Извините, по какой-то причине часть PHP не отображалась должным образом

Я пытаюсь получить значение из PHP/HTML в javascript, используя getElementByID().value.

Однако, даже если значение в PHP десятичное, в JS это целое число. Мне нужно получить значение с плавающей запятой, так как это координаты положения на карте для Google.

Вот часть PHP: $lat и $long - десятичные числа (я пытался заменить запятые точками, но безрезультатно)

echo '
<ul id="cordinates">
<li id="lat" value="',$lat,'"></li>
<li id="lon"    value="',$long,'"></li>
</ul>';

и вот часть JS:

var lat = (document.getElementById('lat').value);
    var lon = (document.getElementById('lon').value);
    console.log("LAT:: "+lat);
    console.log("LON:: "+lon);

Пример вывода на сайте: 53.9933371, -6.3912622 и в консоли LAT::53 LON::-6

Что я делаю не так? Как я могу получить значение с плавающей запятой в JS? Любой намек будет большим подспорьем для меня, спасибо.


person Szarley Dwarf    schedule 09.07.2015    source источник


Ответы (1)


ОБНОВИТЬ:

Значение свойства элемента ‹ li > не соответствует тому типу значения, которое вы хотите. "Этот целочисленный атрибут указывает текущее порядковое значение элемента списка, определенное элементом." Ссылка на Mozilla Так что я предполагаю, что это округляется или что-то в этом роде.

Пожалуйста, используйте свойства data-* для хранения координат:

<ul id="cordinates">
    <li id="lat" data-value="52.0193">52.0193</li>
    <li id="lon" data-value="23.2413">23.2413</li>
</ul>

И измените свой javascript на:

var lat = (parseFloat(document.getElementById('lat').dataset.value)); 
var lon = (parseFloat(document.getElementById('lon').dataset.value)); 

Я действительно не знаю PHP, но я думаю, что вы должны изменить его на это:

echo '
<ul id="cordinates">
<li id="lat" data-value="',$lat,'">',$lat,'</li>
<li id="lon" data-value="',$long,'">',$lon,'</li>
</ul>';

ОРИГИНАЛЬНЫЙ ОТВЕТ:

Используйте parseFloat() – Справочник

var lat = (parseFloat(document.getElementById('lat').value)); 
var lon = (parseFloat(document.getElementById('lon').value)); 
console.log("LAT:: "+lat); 
console.log("LON:: "+lon);
person Keammoort    schedule 09.07.2015
comment
Я тоже использовал это :/ безрезультатно - person Szarley Dwarf; 09.07.2015
comment
Не могли бы вы предоставить jsfiddle HTML, который отображается из вашего приложения? Какой браузер вы используете? - person Keammoort; 09.07.2015
comment
извините, я не знаю, как использовать jsfiddle. Я использую браузер Chrome - person Szarley Dwarf; 09.07.2015
comment
Да, все работает отлично, спасибо и хорошего дня - person Szarley Dwarf; 10.07.2015
comment
Еще один вопрос, что может быть не так, если все работает на локальном хосте, но когда я помещаю его на реальный сервер, это не так. Я использую: $xml = simplexml_load_file($request_url) или die(url не загружается); и получить URL-адрес сообщения, который не загружается - person Szarley Dwarf; 10.07.2015
comment
Я не уверен, почему это происходит, возможно, этот вопрос вам как-то поможет: stackoverflow.com/questions/2106236/ - person Keammoort; 10.07.2015
comment
@Keammort - спасибо, вы как-то разобрались, есть небольшие ошибки, но я могу это исправить. еще раз спасибо - person Szarley Dwarf; 21.07.2015