|
|
|
| Проблема в следующем: есть всем известная функция parseInt(), в которую передаются различные строковые параметры. На выходе, естественно, ожидаются целые числа.
Но. Попробуйте посмотреть, что выведет parseInt('09') (или '08') в IE или в Firefox'e.
У меня, как ни странно, она выводит 0.
Собственно, проблема решилась заменой этой функции на parseFloat(), но все-же интересно, это глюк JS-движка или еще что-то?
Самое интересное, что такое происходит только для строк '08' и '09', т.е. передавая например '07', получаем ожидаемую 7.
Вот, предлагаю испытать этот тестовый пример:
<script type="text/javascript">
document.write('parseInt("07") = ' + parseInt('07'));
document.write('<br>');
document.write('parseInt("08") = ' + parseInt('08'));
document.write('<br>');
document.write('parseInt("09") = ' + parseInt('09'));
</script>
|
Я проверял:
Opera 9.1 - верно
Firefox 1.5 - неверно
IE 6.0 - неверно | |
|
|
|
|
|
|
|
для: mesos
(05.06.2007 в 17:44)
| | опера рулит)) | |
|
|
|
|
|
|
|
для: bronenos
(05.06.2007 в 18:45)
| | Хм, ну это все же спорный вопрос :)
В общем, порылся в Гугле и выяснил, что я не первый встретил эту проблему.
Это в принципе даже не ошибка, дело в том, что числа, начинающиеся с 0 браузер пытается интерпретировать как восьмеричные, а 08 и 09 в этой системе счисления не существуют.
Как вариант решения:
десятка здесь жестко задает систему счисления. | |
|
|
|