JQUERY Int и String Addition - PullRequest
       14

JQUERY Int и String Addition

0 голосов
/ 26 августа 2011

Хорошо, у меня есть следующий «скрипт»:

var text = '24 - 08';
var value = text.split(" - ");


var result = 24 - value[0];
result = result + value[1];
alert(result);

http://jsbin.com/amusaw/edit#javascript,html

Таким образом, результатом этой простой математической операции является 0 с parseInt или 008 без него. Это должно быть 8. Я пробовал это с несколькими различными числами (вместо 08, 04 или 05 и т. Д.) или 22 - 09.

Иногда значение результата является правильным, а иногда - нет. Я пытался применить parseInt ко всем "математическим операциям" ... безуспешно. Я думаю, что это крошечная ошибка, но я не понимаю: (

Ответы [ 2 ]

3 голосов
/ 26 августа 2011

Убедитесь, что вы указали базу при разборе целых:

parseInt(value[0], 10);
parseInt(value[1], 10);

Весь код:

var text = '24 - 08';
var value = text.split(" - ");


var result = 24 - parseInt(value[0], 10);
result = result + parseInt(value[1], 10);
alert(result);

http://jsbin.com/amusaw/2/edit

Когда строка начинается с 0 parseInt, предполагается, что число является восьмеричным (основание 8). Это устаревшее поведение, но оно ведет себя так или иначе. Число 08 недопустимо в восьмеричном виде, поскольку существуют только цифры 0-7, поэтому оно просто возвращает 0. Он определяет, что цифра 8 не является частью числа, это все равно что видеть 0A или 0T (или любой другой не 0-7 символ).

Подробнее о parseInt (): https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt. На самом деле вы можете найти пример parseInt("08");, который вызвал вашу проблему, прямо в нижней части этой страницы.

0 голосов
/ 26 августа 2011

Кажется, это работает с использованием parseFloat вместо parseInt. Вы можете сделать:

var result = 24 - parseFloat(value[0]);
result = result + parseFloat(value[1]);
alert(result);

Затем можно преобразовать в int с помощью parseInt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...