Выполнение арифметики по валютным значениям в форме текста с использованием Javascript - PullRequest
1 голос
/ 22 марта 2010

Я использую JQuery для получения содержимого div, который содержит только цену в долларах, и я хотел бы добавить к нему 99 долларов, но его текст, поэтому, когда я делаю ниже, он не будет работать.

$('#price_' + part[0]).text($('#price_' + part[0]).text() + 99);
//Changes the div contents to $10099 - if it the contents was $100 to start with

Итак, вопрос в том, как добавить числовые значения?

Спасибо всем

Редактировать

Обратите внимание, что некоторые числа могут содержать запятую, т.е. $ 1200

Ответы [ 4 ]

2 голосов
/ 22 марта 2010

Получить числовую подстроку и привести ее к числу:

$('#price_' + part[0]).text("$" + (+($('#price_' + part[0]).text()).substring(1) + 99)); 

Обратите внимание на использование унарного оператора + для приведения строки в число и использование подстроки для получения всего, что находится после 1-го ($) символа в строке.


UPDATE

Поскольку вы упомянули, что значение может содержать запятую, вам лучше немного разбить это и выполнить замену строки:

var div    = $('#price_' + part[0]);  // get a ref to the div

// replace occurrences of `$` or `,`, cast to a number and add 99
var amount = +div.text().replace(/[$,]/g, '') + 99;

// set the new text to the div
div.text("$" + amount);
1 голос
/ 22 марта 2010

Как то так должно работать

 var str = $(...).text();
 var sum = parseInt(str.replace(/\D/g, ""));
 $(...).text("$" + (sum + 99))
0 голосов
/ 22 марта 2010

Вам придется преобразовать текст в int / float, прежде чем выполнять арифметику

$('#price_' + part[0]).text( parseInt( $('#price_' + part[0]).text() ) + 99);

parseFloat вместо parseInt, если вам нужно / хотите.

0 голосов
/ 22 марта 2010

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

var price = $('#price_' + part[0]);
price.text(parseInt(price.text()) + 99);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...