innerHTML в сочетании с parseFloat - PullRequest
3 голосов
/ 02 мая 2011

То, что я пытаюсь сделать, может быть достигнуто следующим ...

elementContent = document.getElementById('docElement').innerHTML;
elementContent = parseFloat(elementContent);

или даже ...

elementContent = parseFloat( document.getElementById('docElement').innerHTML );

, но я не могу помочьИнтересно, есть ли более элегантный способ извлечения и назначения содержимого DOM как плавающего объекта, о котором я могу не знать.Любое понимание?

Ответы [ 4 ]

8 голосов
/ 02 мая 2011

Существует унарный оператор плюс , который пытается преобразовать строку (или toString() другого типа) в число. Это будет использоваться как:

elementContent = +document.getElementById('docElement').innerHTML;

Как уже упоминали другие, вы также можете использовать jQuery как синтаксический сахар для .innerHTML и здесь.

2 голосов
/ 02 мая 2011

Это хороший способ делать вещи.Единственное, что я могу предложить, это то, что если вы можете избежать работы с разметкой HTML полностью, сохраняя «чистое» число в качестве атрибута элемента, это было бы предпочтительнее, так как это могло бы обойти проблемы, которые могут возникнуть, еслиHTML становится интереснее, чем вы ожидаете.(Например, иногда дизайнеры хотят, чтобы отрицательные числа форматировались с символом «минус» Юникода вместо простого дефиса, потому что он выглядит лучше.)

Таким образом, если бы вы могли генерировать свои элементы, как это:

<span id='docElement' data-value='29.20221'>29.20221</span>

тогда вместо доступа к значению как ".innerHTML" вы будете использовать ".getAttribute ()":

var value = document.getElementById('docElement').getAttribute('data-value');
value = parseFloat(value);
0 голосов
/ 02 мая 2011

Если вы используете библиотеку, такую ​​как jQuery , код для этого будет более элегантным, например:

var el = parseFloat( $('#docElement').text() );

Не забывайте, что вы можете столкнуться с проблемой, когда вынужно также trim() строку.

0 голосов
/ 02 мая 2011

Использовать JQuery:

var html = parseFloat($('#docElement').html());
$('#docElement').html(html);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...