Трудно сказать, не видя, что находится в вашем файле url/index.js
, но, вероятно, он пытается добавить узел к элементу <body>
или его потомку до того, как он существует. Он еще не будет существовать, если вы вызываете этот скрипт в разделе <head>
.
Причина, по которой <p></p>
исправляет это, заключается в том, что если браузер получает следующее:
<head>
<script>
console.log(document.body);
</script>
</head>
Он видит, что это недействительный HTML, и поэтому он интерпретируется как:
<html>
<head>
<script>
console.log(document.body);
</script>
</head>
<body></body>
</html>
- тело не существует к моменту запуска сценария, поэтому консоль записывает в журнал null
.
Если браузер получает:
<p>Paragraph</p>
<head>
<script>
console.log(document.body);
</script>
</head>
... это снова недействительный HTML, и он интерпретируется как
<html>
<head></head>
<body>
<p>Paragraph</p>
<script>
console.log(document.body);
</script>
</body>
</html>
... и элемент тела существует, когда скрипт выполняется, поэтому он регистрирует элемент body на консоли.
В итоге: Вы должны убедиться, что весь ваш HTML верен, и что ваш скрипт только пытается добавить что-то к элементу, который уже существует.
$rootbeer = (float) $InvoicedUnits;
Должен сделать это для Вас. Выезд Манипулирование Типа . Необходимо также читать Преобразование строк в Номера .
Вы хотите функция non-locale-aware floatval
:
плавание floatval (смешанный $var) - Получает значение плавающее строки.
Пример:
$string = '122.34343The';
$float = floatval($string);
echo $float; // 122.34343
Работа с разметкой с плавающей запятой - нетривиальная задача. В английской / американской нотации вы отформатируете тысячу плюс 46 * 10-2
:
1,000.46
Но в Германии вы бы изменили запятую и точку:
1.000,46
Это затрудняет угадывание правильного числа в multi -языковые приложения.
Я настоятельно рекомендую использовать Zend_Measure
Zend Framework для этой задачи. Этот компонент преобразует строку в число с плавающей запятой в соответствии с языком пользователя.
Ну, если пользователь напишет 1,00,000, тогда переменная с плавающей запятой покажет ошибку. Итак -
floatval(preg_replace("/[^-0-9\.]/","",$input));
Это намного надежнее.
Использование:
$input = '1,03,24,23,434,500.6798633 this';
echo floatval(preg_replace("/[^-0-9\.]/","",$input));